小编Spa*_*apS的帖子

特质专业化如何实际起作用?

我试图专门化一个特性,但由于"实施冲突"而无法编译.但我对专业化的理解是,更具体的实现应该覆盖更通用的实现.这是一个非常基本的例子:

mod diving {
    pub struct Diver<T> {
        inner: T
    }
}

mod swimming {
    use diving;
    pub trait Swimmer {
        fn swim(&self) {
            println!("swimming")
        }
    }

    impl<T> Swimmer for diving::Diver<T> {

    }
}

mod drowning {
    use diving;
    use swimming;
    impl swimming::Swimmer for diving::Diver<&'static str> {
        fn swim(&self) {
            println!("drowning, help!")
        }
    }
}

fn main() {
    let x = diving::Diver::<&'static str> {
        inner: "Bob"
    };
    x.swim()
}
Run Code Online (Sandbox Code Playgroud)

错误是:

rustc 1.18.0 (03fc9d622 2017-06-06)
error[E0119]: conflicting implementations of trait `swimming::Swimmer` …
Run Code Online (Sandbox Code Playgroud)

specialization rust

2
推荐指数
1
解决办法
654
查看次数

标签 统计

rust ×1

specialization ×1