【发布时间】:2017-07-17 19:02:39
【问题描述】:
在编写带有特征的代码时,您可以将特征放入特征绑定中:
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,这只是几个混合概念之一)
【问题讨论】:
标签: rust traits trait-objects