當與特點編寫代碼,你可以把性狀的必然性狀:<T: Trait> Box <T>和&Trait/Box <Trait>有什麼區別?
use std::fmt::Debug;
fn myfunction1<T: Debug>(v: Box<T>) {
println!("{:?}", v);
}
fn myfunction2<T: Debug>(v: &T) {
println!("{:?}", v);
}
fn main() {
myfunction1(Box::new(5));
myfunction2(&5);
}
在
Box
或引用類型
或者直接:
use std::fmt::Debug;
fn myfunction3(v: Box<Debug>) {
println!("{:?}", v);
}
fn myfunction4(v: &Debug) {
println!("{:?}", v);
}
fn main() {
myfunction3(Box::new(5));
myfunction4(&5);
}
這些給相同的輸出。那麼區別是什麼呢?
(對此問題予以another question靈感哪裏,這只是幾個混雜的概念之一)