如果我编写一个接受一个类型参数的函数[f32]
(而不是 eg &[f32]
),我会得到一个错误:
the trait bound `[f32]: std::marker::Sized` is not satisfied
文档说这是因为[f32]
没有编译时已知的大小。合理的限制。很公平。
但是,标准库中至少有一个具有这种类型的函数。我这样称呼它:
let b: Box<[f32]> = Box::new([1.0, 2.0, 3.0]);
为什么在标准库而不是我的代码中允许这样做?相关的区别是什么?(源代码中没有明显的魔法)。