我正在学习Rust,我想了解函数调用之间的区别
S::foo(&s);
T::foo(&s);
<S as T>::foo(&s);
1为什么我们需要所有这些方式?有什么不同呢?
2我们应该在哪里使用它?
struct S;
trait T {
fn foo(&self);
}
impl T for S {
fn foo(&self) {
println!("XXX");
}
}
fn main() {
let s = S;
s.foo(); // (It's clear)
S::foo(&s);
T::foo(&s);
<S as T>::foo(&s);
}