Feature gate: #![feature(int_lowest_highest_one)]
This is a tracking issue for the lowest_one and highest_one methods on primitive integer types and their NonZero counterparts.
These methods provide an efficient way to find the index of the least significant (lowest) and most significant (highest) set bit in an integer. They are common, low-level operations often supported directly by hardware (e.g. BSF/BSR on x86) and frequently used in systems programming, such as in OS kernels for managing bitmasks.
Public API
impl {u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize, isize} {
const fn lowest_one(self) -> Option<u32>;
const fn highest_one(self) -> Option<u32>;
}
// For all `T` in the impl block above.
impl NonZero<T> {
const fn lowest_one(self) -> u32;
const fn highest_one(self) -> u32;
}
Steps / History
Unresolved Questions
None.
Resolved Questions
Feature gate:
#![feature(int_lowest_highest_one)]This is a tracking issue for the
lowest_oneandhighest_onemethods on primitive integer types and theirNonZerocounterparts.These methods provide an efficient way to find the index of the least significant (
lowest) and most significant (highest) set bit in an integer. They are common, low-level operations often supported directly by hardware (e.g.BSF/BSRon x86) and frequently used in systems programming, such as in OS kernels for managing bitmasks.Public API
Steps / History
first_set_bitandlast_set_bitfor integer types libs-team#631int_lowest_highest_onefor integer and NonZero types #145381Unresolved Questions
None.
Resolved Questions
lowest_oneandhighest_one, we want to maintain consistency with ACP: addleast_significant_oneandmost_significant_oneto integer types andNonZerotypes libs-team#467 (Tracking Issue forisolate_most_least_significant_one#136909).isolate_most_least_significant_onefunctions #144971, which seems to confirmlowest_oneandhighest_onefor this feature.Footnotes
https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html ↩