Использование связанной константы в реализации черты по умолчанию - PullRequest
2 голосов
/ 01 ноября 2019

Я хотел бы выполнить следующее

trait Trait {
    const CONST: f64;
    fn fun(&self) -> f64 {
        1.0 + self.CONST
    }
}

и затем определить группу struct -х, реализующих Trait с различными константами. Например,

struct Struct {}
impl Trait for Struct {
    const CONST: f64 = 1.0;
}

К сожалению, предыдущий фрагмент не компилируется. Я могу иметь как связанную константу, так и реализацию по умолчанию, но, похоже, я не могу использовать const в реализации по умолчанию. Возможно ли это вообще?

1 Ответ

4 голосов
/ 01 ноября 2019

Константа принадлежит не конкретному экземпляру, а самому типу. Вы должны использовать Self::CONST:

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

( Постоянная ссылка на игровую площадку )

...