Types 为什么可以';类型别名是否使用Rust中原始类型的关联常量?
编者按:从Rust 1.43开始,它的工作原理与预期一致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
我有一个类型别名
type cardd=u64我想通过std::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!((“整数中的最大值:{}和{}”,此_有效,此_也有效);
}