【问题标题】:Owned pointer to a trait拥有指向特征的指针
【发布时间】:2013-05-29 00:43:02
【问题描述】:

为什么以下失败以及如何存储指向特征的拥有指针?

trait Trait {};
struct Struct;
impl Trait for Struct {};

struct Container {
  child: ~Trait
};
let container = ~Container { child: ~Struct };

错误:不匹配的类型:预期 ~main::test02::Trait 但找到 ~main::test02::Struct(预期特征 benchmark::test02::Trait 但找到 ~-ptr

【问题讨论】:

  • 您是否按照 Ramon 的建议将值转换为您的特征类型成功了?我正在尝试相同的方法,它编译得很好,但是运行时出现段错误。我为它打开了一个错误:github.com/mozilla/rust/issues/6717
  • @Andreas 这很奇怪。我可以确认您的代码已崩溃(即使进行了一些修改 - 问题几乎肯定存在)。但是,我不确定这总是崩溃 - 不知道为什么这种情况很特殊。

标签: rust


【解决方案1】:

你必须转换值:

trait Trait {}
struct Struct;
impl Trait for Struct {}

struct Container {
  child : ~Trait
}
fn main() {
    let container = ~Container { child: ~Struct as ~Trait };
    println("")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多