在默认特征实现中使用关联常量

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。这可能吗?

mca*_*ton 5

常量不属于特定实例,而是属于类型本身。您必须使用Self::CONST

trait Trait {
    const CONST: f64;
    fn fun(&self) -> f64 {
        1.0 + Self::CONST
    }
}
Run Code Online (Sandbox Code Playgroud)

固定链接到操场