error[E0658]: the `#[rustc_layout_scalar_valid_range_start]` attribute is just used to enable niche optimizations in libcore and libstd and will never be stable
--> src/main.rs:3:1
|
3 | #[rustc_layout_scalar_valid_range_start(0)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: add `#![feature(rustc_attrs)]` to the crate attributes to enable
error[E0658]: the `#[rustc_layout_scalar_valid_range_end]` attribute is just used to enable niche optimizations in libcore and libstd and will never be stable
--> src/main.rs:4:1
|
4 | #[rustc_layout_scalar_valid_range_end(254)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: add `#![feature(rustc_attrs)]` to the crate attributes to enable
2条答案
按热度按时间qnzebej01#
要真正直接获得利基优化,您必须使用超级不稳定的
rustc_
属性。我说"超级不稳定"是因为这些属性永远不会稳定,至少在它们当前的形式下不会。如果不使用
feature(rustc_attrs)
,将发出以下消息:已经有人要求编译器支持范围整数,比如讨论here,但我不认为到目前为止已经正式提出了任何建议。
ozxc1zmp2#
有一个nonmax机箱提供了这个功能,具体请参见
NonMaxU8
。这个功能之所以有效,是因为它在内部使用NonZeroU8
,并在创建和.get()
方法时进行适当的转换。如果你想要一个不同的变量,而不仅仅是zero或max,你可以很容易地自己创建。nonmax crate使用XOR策略将不可表示的值清零,或者使用模运算方法,如注解中所建议的: