我有一个具有两个相关功能的特征:
trait WithConstructor: Sized {
fn new_with_param(param: usize) -> Self;
fn new() -> Self {
Self::new_with_param(0)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么第二个方法(new())的默认实现迫使我把Sized绑定放在类型上?我认为这是因为堆栈指针操作,但我不确定.
如果编译器需要知道大小的栈上分配内存,为什么下面的例子中不需要Sized的T?
struct SimpleStruct<T> {
field: T,
}
fn main() {
let s = SimpleStruct { field: 0u32 };
}
Run Code Online (Sandbox Code Playgroud)