У меня есть черта RawFd
, которая реализована для каждого типа, удовлетворяющего особым требованиям.
Теперь у меня есть функция, которая принимает любой тип, который реализует RawFd
.И у меня есть черта с реализацией для каждого T
, которая реализует RawFd
.
Однако я не могу вызвать свою функцию из моей черты, даже если T
реализует RawFd
:
pub trait RawFd {
fn raw_fd(&self) -> u64;
}
#[cfg(unix)]
impl<T: std::os::unix::io::AsRawFd> RawFd for T {
fn raw_fd(&self) -> u64 { self.as_raw_fd() as u64 }
}
#[cfg(windows)]
impl<T: std::os::windows::io::AsRawSocket> RawFd for T {
fn raw_fd(&self) -> u64 { self.as_raw_socket() as u64 }
}
fn print_fd<T: RawFd>(p: T) {
println!("{}", p.raw_fd());
}
trait Printable {
fn print(&self);
}
impl<T: RawFd> Printable for T {
fn print(&self) {
print_fd(self);
}
}
В чем здесь моя ошибка и как я могу ее исправить.
(ссылка на детская площадка )