【发布时间】:2022-11-13 21:51:41
【问题描述】:
为什么下面的代码不会导致无休止的递归?
我希望 FFF 的 impl 为 is_empty 调用 self.is_empty() 将导致无限递归而不调用 Foo 的 impl。
struct Foo{}
impl Foo{
pub fn is_empty(&self) -> Option<bool>{
Some(true)
}
}
trait FFF {
fn is_empty(&self) -> Option<bool>;
}
impl FFF for Foo {
fn is_empty(&self) -> Option<bool>{
println!("calling FFF");
self.is_empty()
}
}
fn pr<F:FFF>(a:F){
println!("{:?}", a.is_empty());
}
fn main() {
pr(Foo{});
}
输出:
calling FFF
Some(true)
【问题讨论】:
标签: rust