Types 为什么可以';类型别名是否使用Rust中原始类型的关联常量?

Types 为什么可以';类型别名是否使用Rust中原始类型的关联常量?,types,rust,alias,associated-const,Types,Rust,Alias,Associated Const,编者按:从Rust 1.43开始,它的工作原理与预期一致 我有一个类型别名type cardd=u64u32 此方法已被弃用。 虽然使用它不会引起编译警告,但应该使用新代码 返回此整数类型可以表示的最大值 (重点不是我的) 也可以通过类型别名访问关联的常量,如您所料: structfoo; impl-Foo{ 常数FOO:u32=42; } 类型Bar=Foo; fn main(){ 让这个_工作=Foo::Foo; 让它也工作吧; 让这个函数也起作用吧\u=u32::MAX;//从Rus

编者按:从Rust 1.43开始,它的工作原理与预期一致


我有一个类型别名
type cardd=u64std::u64::MAX
常量将其初始化为最大值。我惊讶地发现,我不能从别名上做同样的事情

使用std::u64;
CardId型=u64;
fn main(){
让这个_工作=u64::MAX;
让这个不起作用=cardd::MAX;
println!(“整数中的最大值:{}和{}”,这个有效,这个无效);
}


我希望也可以从类型别名访问
MAX
常量。当我将类型更改为u32时,这将有助于我,这将导致代码有两点需要修改,而不仅仅是类型别名的位置。为什么会做出这个决定,我是否错过了一些可能使之成为可能的东西?

在Rust 1.43之前,诸如
std::u64::MAX
之类的常数不是与
u64
类型相关联的常数,而是在名为
u64
的模块中定义的常数。 这是Rust没有相关常数时遗留下来的

从1.43开始,这些常数被定义为相应类型的关联常数。 目前有。目前,它们仅限于和文档注释:

常数std::u32::MAX
pub const MAX:u32=u32::MAX_value();//4_2 94_967_295u32
此整数类型可以表示的最大值改用。

(重点是我的)

另一种方法是使用相关的
const
方法(例如,
u32::max_value
),这是因为在相关的常量之前可以使用常量方法而添加的。这些也是不推荐使用的软件,文档说明如下:

pub const fn max_value()->u32
此方法已被弃用。

虽然使用它不会引起编译警告,但应该使用新代码

返回此整数类型可以表示的最大值

(重点不是我的)


也可以通过类型别名访问关联的常量,如您所料:

structfoo;
impl-Foo{
常数FOO:u32=42;
}
类型Bar=Foo;
fn main(){
让这个_工作=Foo::Foo;
让它也工作吧;
让这个函数也起作用吧\u=u32::MAX;//从Rust 1.43开始
println!(“答案:{}和{}或{}”,这个工作,这个也工作,这个也工作);
}
这是因为它是一个模块常量,而不是类型常量

如果要将其与类型别名一起使用,则可以使用:

使用std::u64;
CardId型=u64;
fn main(){
让它工作=u64::max_value();
让这个函数像cardd::max_value()一样工作;
println!((“整数中的最大值:{}和{}”,此_有效,此_也有效);
}