Commit b7c8d7a8 authored by Tamir Duberstein's avatar Tamir Duberstein Committed by Miguel Ojeda
Browse files

rust: enable `clippy::cast_lossless` lint

Before Rust 1.29.0, Clippy introduced the `cast_lossless` lint [1]:

> Rust’s `as` keyword will perform many kinds of conversions, including
> silently lossy conversions. Conversion functions such as `i32::from`
> will only perform lossless conversions. Using the conversion functions
> prevents conversions from becoming silently lossy if the input types
> ever change, and makes it clear for people reading the code that the
> conversion is lossless.

While this doesn't eliminate unchecked `as` conversions, it makes such
conversions easier to scrutinize.  It also has the slight benefit of
removing a degree of freedom on which to bikeshed. Thus apply the
changes and enable the lint -- no functional change intended.

Link: https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless

 [1]
Suggested-by: default avatarBenno Lossin <benno.lossin@proton.me>
Link: https://lore.kernel.org/all/D8ORTXSUTKGL.1KOJAGBM8F8TN@proton.me/


Reviewed-by: default avatarBenno Lossin <benno.lossin@proton.me>
Reviewed-by: default avatarBoqun Feng <boqun.feng@gmail.com>
Signed-off-by: default avatarTamir Duberstein <tamird@gmail.com>
Acked-by: default avatarFUJITA Tomonori <fujita.tomonori@gmail.com>
Acked-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Acked-by: default avatarDanilo Krummrich <dakr@kernel.org>
Link: https://lore.kernel.org/r/20250615-ptr-as-ptr-v12-5-f43b024581e8@gmail.com


Signed-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
parent 5e305505
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -481,6 +481,7 @@ export rust_common_flags := --edition=2021 \
			    -Wclippy::all \
			    -Wclippy::as_ptr_cast_mut \
			    -Wclippy::as_underscore \
			    -Wclippy::cast_lossless \
			    -Wclippy::ignored_unit_patterns \
			    -Wclippy::mut_mut \
			    -Wclippy::needless_bitwise_bool \
+2 −2
Original line number Diff line number Diff line
@@ -404,7 +404,7 @@ fn pop3(&mut self) -> Option<(u16, usize)> {
            let mut out = 0;
            let mut exp = 1;
            for i in 0..poplen {
                out += self.decimals[self.len + i] as u16 * exp;
                out += u16::from(self.decimals[self.len + i]) * exp;
                exp *= 10;
            }
            Some((out, NUM_CHARS_BITS[poplen]))
@@ -425,7 +425,7 @@ fn next(&mut self) -> Option<Self::Item> {
        match self.segment {
            Segment::Binary(data) => {
                if self.offset < data.len() {
                    let byte = data[self.offset] as u16;
                    let byte = u16::from(data[self.offset]);
                    self.offset += 1;
                    Some((byte, 8))
                } else {
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ pub(crate) fn architecture(self) -> Result<Architecture> {
    pub(crate) fn chipset(self) -> Result<Chipset> {
        self.architecture()
            .map(|arch| {
                ((arch as u32) << Self::IMPLEMENTATION.len()) | self.implementation() as u32
                ((arch as u32) << Self::IMPLEMENTATION.len()) | u32::from(self.implementation())
            })
            .and_then(Chipset::try_from)
    }
+1 −1
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ pub(crate) fn $field(self) -> $res_type {
        pub(crate) fn [<set_ $field>](mut self, value: $to_type) -> Self {
            const MASK: u32 = $name::[<$field:upper _MASK>];
            const SHIFT: u32 = $name::[<$field:upper _SHIFT>];
            let value = ((value as u32) << SHIFT) & MASK;
            let value = (u32::from(value) << SHIFT) & MASK;
            self.0 = (self.0 & !MASK) | value;

            self
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
)]

#[allow(dead_code)]
#[allow(clippy::cast_lossless)]
#[allow(clippy::ptr_as_ptr)]
#[allow(clippy::undocumented_unsafe_blocks)]
#[cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))]
Loading