Vic*_*aev 3 constants traits rust
我想完成以下工作
trait Trait {
const CONST: f64;
fn fun(&self) -> f64 {
1.0 + self.CONST
}
}
Run Code Online (Sandbox Code Playgroud)
然后定义一堆struct-s 实现Trait不同的常量。如
struct Struct {}
impl Trait for Struct {
const CONST: f64 = 1.0;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,前面的代码片段无法编译。我可以同时拥有关联常量和默认实现,但似乎我不能在默认实现中使用 const。这可能吗?
常量不属于特定实例,而是属于类型本身。您必须使用Self::CONST:
trait Trait {
const CONST: f64;
fn fun(&self) -> f64 {
1.0 + Self::CONST
}
}
Run Code Online (Sandbox Code Playgroud)
(固定链接到操场)