{ fn query(value: T) -> Self; }
impl One<u8> for Nums {
fn query(value: u8) -> Self { Self::ONE }
}
///----------------------------
trait Number<T> { fn query(&self) -> T; }
impl Number<u8> for Nums {
fn query(&self) -> u8 { 0 }
}
impl Into<Nums> for u8 {
fn into(self) -> Nums {
// <Nums as One<Self>>::query(self) // Ok
Nums::query(self) // error[E0034]: multiple applicable items in scope
}
}
Уточните, пожалуйста, почему так нельзя, я ведь обрушаюсь к функции query через ::, а НЕ через .(точку), то ведь очевидно, что вызов функция query должен быть из трейта One, т.к. в данном трейте НЕ используется self, &mut self, &self ?
Не очевидно, потому что ты и к методам, которые принимают self, можешь обращаться через path
Точка - это сахар для ::
Обсуждают сегодня