我知道这是因为对象安全:
对象安全特征可以是特征对象的基本特征。如果特征具有以下品质(在RFC 255中定义),则该特征是对象安全的:
- ...
- 它不能有任何关联的常量。
但是如果用特定值声明关联常量,为什么 Rust 仍然不支持它呢?这是一个例子:
trait Trait {
const A: i32 = 64;
}
fn fun(t: Box<dyn Trait>) -> bool {
return true;
}
Run Code Online (Sandbox Code Playgroud)
我想用函数返回一个常量值,故意省略&self参数,但还是不行。这是代码:
trait Trait {
fn getA() -> i32 {
64
}
}
fn fun(t: Box<dyn Trait>) -> bool {
return true;
}
Run Code Online (Sandbox Code Playgroud)
Rust 不支持它有什么低级原因吗?或者只是因为 RFC 规则?