作者:杨艳奎_718 | 来源:互联网 | 2022-12-07 12:32
Rust是否有一个功能,我可以创建定义特征上可能不存在的方法?
我意识到这Option
可以用来处理可能不存在的属性,但我不知道如何用方法实现相同.
在TypeScript中,问号表示方法可能不存在.以下是RxJs的摘录:
export interface NextObserver {
next?: (value: T) => void;
// ...
}
如果Rust中不存在此功能,那么应该如何考虑处理对象,程序员不知道方法是否存在?恐慌?
1> ozkriff..:
您可以尝试使用方法的空默认实现:
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();
}
操场