小编Nei*_*hen的帖子

将特征用作类型时出错,但在用作where子句中的边界时则出错

似乎Rust编译器对where子句有不同的行为.

mod sub {
    use std::mem;

    static mut FF : *const Foo = &NopFoo;

    pub trait Foo: Send + Sync {
        fn foo(&self);
    }

    pub struct NopFoo;

    impl Foo for NopFoo {
        fn foo(&self) { println!("Nop"); }
    }

    pub struct HelloFoo {
        pub num: i64,
    }

    impl Foo for HelloFoo {
        fn foo(&self) { println!("Hello, {}", self.num ); }
    }

    pub fn set_ff<M>(make_foo: M) -> bool
        where M: FnOnce() -> Box<Foo> // <== Here
    {
        unsafe {
            FF …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×1