小编joj*_*ojo的帖子

特质实施大小

我知道特征和切片是未分级的,即在编译时不可能知道它们的大小,例如任何类型都可以实现特征,但是该类型可能没有大小.

不过,这个示例代码是不是意味着每个实现特征的类型都Foo需要实现Sized呢?

trait Foo: Sized {}

struct Bar(i64);

impl Foo for Bar {}
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么这不起作用?

impl From<Foo> for Bar {
    fn from(foo: Foo) -> Bar {
        Bar(64)
    }
}
Run Code Online (Sandbox Code Playgroud)
error[E0277]: the trait bound `Foo + 'static: std::marker::Sized` is not satisfied
 --> src/main.rs:7:6
  |
7 | impl From<Foo> for Bar {
  |      ^^^^^^^^^ `Foo + 'static` does not have a constant size known at compile-time
  |
  = help: the trait `std::marker::Sized` is not implemented for `Foo + 'static` …
Run Code Online (Sandbox Code Playgroud)

rust

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

'static as a function constraint是什么意思?

在这种情况下,静态是什么意思?

fn foo<F: Human + 'static>(param: F) {}

fn main() {
    let kate = Kate { age: 30 };
    foo(kate);
}
Run Code Online (Sandbox Code Playgroud)

我理解标记global_variable static类似于静态意味着即.在c#中,变量的空间分配在内存的单独段中,存在于程序的整个执行中.

static global_variable: i32 = 5;
Run Code Online (Sandbox Code Playgroud)

但是我不明白给出"静态约束"意味着什么.被kate莫名其妙地促进和她的一生延长,因此现在住的程序太的整体执行力?

或者它只是意味着一旦foo停止使用它就会被解除分配?

lifetime rust

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

标签 统计

rust ×2

lifetime ×1