Константы, такие как std::u64::MAX
, не являются связанными константами типа u64
, но константы, определенные в модуле с именем u64
.
Это наследие, когда у Rust не было связанных констант. В настоящее время существует RFC, открытый для их устаревания .
«Новый» способ сделать это - использовать связанные const
методы, которые доступны через псевдонимы типов:
use std::u64;
type CardId = u64;
fn main() {
let this_works = u64::max_value();
let this_also_work = CardId::max_value();
println!(
"Max amount in integer: {} and {}",
this_works, this_also_work
);
}
(Постоянная ссылка на игровую площадку)
Связанные константы также доступны через псевдонимы типов, как вы ожидаете:
struct Foo;
impl Foo {
const FOO: u32 = 42;
}
type Bar = Foo;
fn main() {
let this_works = Foo::FOO;
let this_also_work = Bar::FOO;
println!("The answer: {} and {}", this_works, this_also_work);
}
(Постоянная ссылка на игровую площадку)