相关疑难解决方法(0)

为什么我不能用 let _ 创建 trait 对象:Arc<dyn Trait> = value.into()?

use std::sync::Arc;

trait Trait {}
struct TraitImpl {}
impl Trait for TraitImpl {}

fn main() {
    let value = TraitImpl {};
    let _: Arc<dyn Trait> = Arc::new(value);    // compiles
    let _: Arc<dyn Trait> = value.into();       // doesn't compile
}
Run Code Online (Sandbox Code Playgroud)

结果

use std::sync::Arc;

trait Trait {}
struct TraitImpl {}
impl Trait for TraitImpl {}

fn main() {
    let value = TraitImpl {};
    let _: Arc<dyn Trait> = Arc::new(value);    // compiles
    let _: Arc<dyn Trait> = value.into();       // doesn't compile
}
Run Code Online (Sandbox Code Playgroud)

( …

generics traits rust trait-objects

3
推荐指数
1
解决办法
749
查看次数

标签 统计

generics ×1

rust ×1

trait-objects ×1

traits ×1