2013-05-29 25 views
1

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

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

+0

你成功Ramon建议你的特质类型?我试着一样,它编译得很好,但运行时会出现段错误。我为它打开了一个错误:https://github.com/mozilla/rust/issues/6717 – Zargony

+0

@Andreas这很奇怪。我可以确认你的代码崩溃了(即使有一些修改 - 问题几乎肯定存在)。但是,我不确定这总是崩溃 - 不知道为什么这个案件是特殊的。 –

回答

4

你投值:由价值铸造

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

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