我有一个特征RawFd
,该特征针对满足特殊要求的每种类型实现。
现在,我有一个函数可以接受实现RawFd
的任何类型。而且我有一个特点,每个实现T
的{{1}}都有一个实现。
但是,即使RawFd
实现了T
,我也无法从我的特征中调用函数:
RawFd
这是我的错误,我该如何解决。
(链接到playground)
答案 0 :(得分:2)
如果您希望将"f"
与参考一起使用,则必须执行以下操作:
print_fd()
或
fn print_fd(p: &impl RawFd) {
println!("{}", p.raw_fd());
}
或者您必须重视价值:
fn print_fd<T: RawFd>(p: &T) {
println!("{}", p.raw_fd());
}
或者您可以使用克隆:
impl<T: RawFd> Printable for T {
fn print(self) {
print_fd(self);
}
}