集册 Rust 编程语言 关联常量

关联常量

欢马劈雪     最近更新时间:2020-08-04 05:37:59

344

associated-constants.md
commit 024aa9a345e92aa1926517c4d9b16bd83e74c10d

通过associated_consts功能,你像这样可以定义常量:

#![feature(associated_consts)]

trait Foo {
    const ID: i32;
}

impl Foo for i32 {
    const ID: i32 = 1;
}

fn main() {
    assert_eq!(1, i32::ID);
}

任何Foo的定义都必须定义ID,不定义的话:

#![feature(associated_consts)]

trait Foo {
    const ID: i32;
}

impl Foo for i32 {
}

会给出

error: not all trait items implemented, missing: `ID` [E0046]
     impl Foo for i32 {
     }

也可以实现一个默认值:

#![feature(associated_consts)]

trait Foo {
    const ID: i32 = 1;
}

impl Foo for i32 {
}

impl Foo for i64 {
    const ID: i32 = 5;
}

fn main() {
    assert_eq!(1, i32::ID);
    assert_eq!(5, i64::ID);
}

如你所见,当实现Foo时,你可以不实现它(关联常量),当作为i32时。接着它将会使用默认值。不过,作为i64时,我们可以增加我们自己的定义。

展开阅读全文