Rust是否具有一项功能,通过它我可以在特征上创建可能不存在的定义方法?
我意识到Option
可用于处理可能不存在的属性,但我不知道如何使用方法来实现相同的目的。
在TypeScript中,问号表示该方法可能不存在。这是RxJs的摘录:
export interface NextObserver<T> {
next?: (value: T) => void;
// ...
}
如果Rust中不存在此功能,那么应该如何处理程序员不知道是否存在方法的对象?恐慌?
答案 0 :(得分:11)
您可以尝试为此使用空的默认方法实现:
trait T {
fn required_method(&self);
// This default implementation does nothing
fn optional_method(&self) {}
}
struct A;
impl T for A {
fn required_method(&self) {
println!("A::required_method");
}
}
struct B;
impl T for B {
fn required_method(&self) {
println!("B::required_method");
}
// overriding T::optional_method with something useful for B
fn optional_method(&self) {
println!("B::optional_method");
}
}
fn main() {
let a = A;
a.required_method();
a.optional_method(); // does nothing
let b = B;
b.required_method();
b.optional_method();
}