newtype
newtype 指使用元组结构体将已有的类型包裹起来,例如struct Meters(u32)
。
为外部类型实现外部特征
例如,想要为Vec
实现Display
特征。而Vec
与Display
都在标准库中,违反孤儿规则。这时就可以通过 newtype 实现:
use std::fmt;
struct Wrapper(Vec<String>);
impl fmt::Display for Wrapper {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "[{}]", self.0.join(", "))
}
}
fn main() {
let w = Wrapper(vec![String::from("hello"), Stirng::from("world")]);
println!("w = {}", w);
}