diff --git a/uefi/src/boot.rs b/uefi/src/boot.rs index 929f7adc7..13526d245 100644 --- a/uefi/src/boot.rs +++ b/uefi/src/boot.rs @@ -1613,7 +1613,7 @@ pub enum LoadImageSource<'a> { }, } -impl<'a> LoadImageSource<'a> { +impl LoadImageSource<'_> { /// Returns the raw FFI parameters for `load_image`. #[must_use] pub(crate) fn to_ffi_params( @@ -1677,7 +1677,7 @@ pub enum SearchType<'guid> { ByRegisterNotify(ProtocolSearchKey), } -impl<'guid> SearchType<'guid> { +impl SearchType<'_> { /// Constructs a new search type for a specified protocol. #[must_use] pub const fn from_proto() -> Self { diff --git a/uefi/src/data_types/owned_strs.rs b/uefi/src/data_types/owned_strs.rs index 64e1f003d..4f2f91bcf 100644 --- a/uefi/src/data_types/owned_strs.rs +++ b/uefi/src/data_types/owned_strs.rs @@ -170,7 +170,7 @@ impl TryFrom> for CString16 { } } -impl<'a> TryFrom<&UnalignedSlice<'a, u16>> for CString16 { +impl TryFrom<&UnalignedSlice<'_, u16>> for CString16 { type Error = FromSliceWithNulError; fn try_from(input: &UnalignedSlice) -> Result { @@ -193,7 +193,7 @@ impl From<&CString16> for String { } } -impl<'a> UnalignedSlice<'a, u16> { +impl UnalignedSlice<'_, u16> { /// Copies `self` to a new [`CString16`]. pub fn to_cstring16(&self) -> Result { CString16::try_from(self) diff --git a/uefi/src/data_types/strs.rs b/uefi/src/data_types/strs.rs index ab29e5700..1239cda11 100644 --- a/uefi/src/data_types/strs.rs +++ b/uefi/src/data_types/strs.rs @@ -720,7 +720,7 @@ impl PartialEq for &CStr16 { } } -impl<'a> UnalignedSlice<'a, u16> { +impl UnalignedSlice<'_, u16> { /// Create a [`CStr16`] from an [`UnalignedSlice`] using an aligned /// buffer for storage. The lifetime of the output is tied to `buf`, /// not `self`. diff --git a/uefi/src/data_types/unaligned_slice.rs b/uefi/src/data_types/unaligned_slice.rs index bee9dafdf..a43c3e61b 100644 --- a/uefi/src/data_types/unaligned_slice.rs +++ b/uefi/src/data_types/unaligned_slice.rs @@ -134,7 +134,7 @@ impl<'a, T: Copy> UnalignedSlice<'a, T> { } } -impl<'a, T: Copy + Debug> Debug for UnalignedSlice<'a, T> { +impl Debug for UnalignedSlice<'_, T> { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { f.debug_list().entries(self.iter()).finish() } @@ -175,7 +175,7 @@ pub struct UnalignedSliceIntoIter<'a, T: Copy> { index: usize, } -impl<'a, T: Copy> Iterator for UnalignedSliceIntoIter<'a, T> { +impl Iterator for UnalignedSliceIntoIter<'_, T> { type Item = T; fn next(&mut self) -> Option { @@ -192,7 +192,7 @@ pub struct UnalignedSliceIter<'a, T: Copy> { index: usize, } -impl<'a, T: Copy> Iterator for UnalignedSliceIter<'a, T> { +impl Iterator for UnalignedSliceIter<'_, T> { type Item = T; fn next(&mut self) -> Option { diff --git a/uefi/src/fs/path/path.rs b/uefi/src/fs/path/path.rs index 4fa1eb0e6..1a6f0043b 100644 --- a/uefi/src/fs/path/path.rs +++ b/uefi/src/fs/path/path.rs @@ -110,7 +110,7 @@ pub struct Components<'a> { i: usize, } -impl<'a> Iterator for Components<'a> { +impl Iterator for Components<'_> { // Attention. We can't iterate over &'Ctr16, as we would break any guarantee // made for the terminating null character. type Item = CString16; diff --git a/uefi/src/helpers/logger.rs b/uefi/src/helpers/logger.rs index 2c7a8a565..0f1ef4837 100644 --- a/uefi/src/helpers/logger.rs +++ b/uefi/src/helpers/logger.rs @@ -217,7 +217,7 @@ impl<'writer, 'a, W: fmt::Write> DecoratedLog<'writer, 'a, W> { } } -impl<'writer, 'a, W: fmt::Write> fmt::Write for DecoratedLog<'writer, 'a, W> { +impl fmt::Write for DecoratedLog<'_, '_, W> { fn write_str(&mut self, s: &str) -> fmt::Result { // Split the input string into lines let mut lines = s.lines(); diff --git a/uefi/src/mem/memory_map/impl_.rs b/uefi/src/mem/memory_map/impl_.rs index 7cf821f1a..e8397071f 100644 --- a/uefi/src/mem/memory_map/impl_.rs +++ b/uefi/src/mem/memory_map/impl_.rs @@ -57,7 +57,7 @@ impl<'a> MemoryMapRef<'a> { } } -impl<'a> MemoryMap for MemoryMapRef<'a> { +impl MemoryMap for MemoryMapRef<'_> { fn meta(&self) -> MemoryMapMeta { self.meta } @@ -119,7 +119,7 @@ impl<'a> MemoryMapRefMut<'a> { } } -impl<'a> MemoryMap for MemoryMapRefMut<'a> { +impl MemoryMap for MemoryMapRefMut<'_> { fn meta(&self) -> MemoryMapMeta { self.meta } @@ -144,7 +144,7 @@ impl<'a> MemoryMap for MemoryMapRefMut<'a> { } } -impl<'a> MemoryMapMut for MemoryMapRefMut<'a> { +impl MemoryMapMut for MemoryMapRefMut<'_> { fn sort(&mut self) { self.qsort(0, self.len - 1); } @@ -154,7 +154,7 @@ impl<'a> MemoryMapMut for MemoryMapRefMut<'a> { } } -impl<'a> MemoryMapRefMut<'a> { +impl MemoryMapRefMut<'_> { /// Hoare partition scheme for quicksort. /// Must be called with `low` and `high` being indices within bounds. fn qsort(&mut self, low: usize, high: usize) { diff --git a/uefi/src/proto/console/gop.rs b/uefi/src/proto/console/gop.rs index 7fe24ec80..46c004b92 100644 --- a/uefi/src/proto/console/gop.rs +++ b/uefi/src/proto/console/gop.rs @@ -414,7 +414,7 @@ pub struct ModeIter<'gop> { max: u32, } -impl<'gop> Iterator for ModeIter<'gop> { +impl Iterator for ModeIter<'_> { type Item = Mode; fn next(&mut self) -> Option { @@ -435,7 +435,7 @@ impl<'gop> Iterator for ModeIter<'gop> { } } -impl<'gop> Debug for ModeIter<'gop> { +impl Debug for ModeIter<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { f.debug_struct("ModeIter") .field("current", &self.current) @@ -557,7 +557,7 @@ pub struct FrameBuffer<'gop> { _lifetime: PhantomData<&'gop mut u8>, } -impl<'gop> FrameBuffer<'gop> { +impl FrameBuffer<'_> { /// Access the raw framebuffer pointer /// /// To use this pointer safely and correctly, you must... diff --git a/uefi/src/proto/console/text/output.rs b/uefi/src/proto/console/text/output.rs index 5dd599d27..cb59aa3b6 100644 --- a/uefi/src/proto/console/text/output.rs +++ b/uefi/src/proto/console/text/output.rs @@ -255,7 +255,7 @@ pub struct OutputModeIter<'out> { max: usize, } -impl<'out> Iterator for OutputModeIter<'out> { +impl Iterator for OutputModeIter<'_> { type Item = OutputMode; fn next(&mut self) -> Option { diff --git a/uefi/src/proto/device_path/device_path_gen.rs b/uefi/src/proto/device_path/device_path_gen.rs index f669f08df..332d482e9 100644 --- a/uefi/src/proto/device_path/device_path_gen.rs +++ b/uefi/src/proto/device_path/device_path_gen.rs @@ -3165,7 +3165,7 @@ pub enum DevicePathNodeEnum<'a> { BiosBootSpecBootSpecification(&'a bios_boot_spec::BootSpecification), } -impl<'a> TryFrom<&DevicePathNode> for DevicePathNodeEnum<'a> { +impl TryFrom<&DevicePathNode> for DevicePathNodeEnum<'_> { type Error = NodeConversionError; fn try_from(node: &DevicePathNode) -> Result { Ok(match node.full_type() { @@ -3516,7 +3516,7 @@ pub mod build { pub vendor_defined_data: &'a [u8], } - unsafe impl<'a> BuildNode for Vendor<'a> { + unsafe impl BuildNode for Vendor<'_> { fn size_in_bytes(&self) -> Result { let size = 20usize + size_of_val(self.vendor_defined_data); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -3692,7 +3692,7 @@ pub mod build { pub cid_str: &'a [u8], } - unsafe impl<'a> BuildNode for Expanded<'a> { + unsafe impl BuildNode for Expanded<'_> { fn size_in_bytes(&self) -> Result { let size = 16usize + size_of_val(self.hid_str) @@ -3744,7 +3744,7 @@ pub mod build { pub adr: &'a AdrSlice, } - unsafe impl<'a> BuildNode for Adr<'a> { + unsafe impl BuildNode for Adr<'_> { fn size_in_bytes(&self) -> Result { let size = 4usize + size_of_val(self.adr); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -4129,7 +4129,7 @@ pub mod build { pub serial_number: &'a [u16], } - unsafe impl<'a> BuildNode for UsbWwid<'a> { + unsafe impl BuildNode for UsbWwid<'_> { fn size_in_bytes(&self) -> Result { let size = 10usize + size_of_val(self.serial_number); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -4638,7 +4638,7 @@ pub mod build { pub vendor_defined_data: &'a [u8], } - unsafe impl<'a> BuildNode for Vendor<'a> { + unsafe impl BuildNode for Vendor<'_> { fn size_in_bytes(&self) -> Result { let size = 20usize + size_of_val(self.vendor_defined_data); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -4742,7 +4742,7 @@ pub mod build { pub iscsi_target_name: &'a [u8], } - unsafe impl<'a> BuildNode for Iscsi<'a> { + unsafe impl BuildNode for Iscsi<'_> { fn size_in_bytes(&self) -> Result { let size = 18usize + size_of_val(self.iscsi_target_name); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -4835,7 +4835,7 @@ pub mod build { pub value: &'a [u8], } - unsafe impl<'a> BuildNode for Uri<'a> { + unsafe impl BuildNode for Uri<'_> { fn size_in_bytes(&self) -> Result { let size = 4usize + size_of_val(self.value); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5080,7 +5080,7 @@ pub mod build { pub addresses: &'a [IpAddress], } - unsafe impl<'a> BuildNode for Dns<'a> { + unsafe impl BuildNode for Dns<'_> { fn size_in_bytes(&self) -> Result { let size = 5usize + size_of_val(self.addresses); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5156,7 +5156,7 @@ pub mod build { pub vendor_guid_and_data: Option>, } - unsafe impl<'a> BuildNode for RestService<'a> { + unsafe impl BuildNode for RestService<'_> { fn size_in_bytes(&self) -> Result { let size = 6usize + self.build_size_vendor_guid_and_data(); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5199,7 +5199,7 @@ pub mod build { pub subsystem_nqn: &'a [u8], } - unsafe impl<'a> BuildNode for NvmeOfNamespace<'a> { + unsafe impl BuildNode for NvmeOfNamespace<'_> { fn size_in_bytes(&self) -> Result { let size = 21usize + size_of_val(self.subsystem_nqn); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5244,7 +5244,7 @@ pub mod build { pub vendor_defined_data: &'a [u8], } - impl<'a> RestService<'a> { + impl RestService<'_> { fn build_size_vendor_guid_and_data(&self) -> usize { if let Some(src) = &self.vendor_guid_and_data { assert!(self.service_type == device_path::messaging::RestServiceType::VENDOR); @@ -5393,7 +5393,7 @@ pub mod build { pub vendor_defined_data: &'a [u8], } - unsafe impl<'a> BuildNode for Vendor<'a> { + unsafe impl BuildNode for Vendor<'_> { fn size_in_bytes(&self) -> Result { let size = 20usize + size_of_val(self.vendor_defined_data); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5433,7 +5433,7 @@ pub mod build { pub path_name: &'a CStr16, } - unsafe impl<'a> BuildNode for FilePath<'a> { + unsafe impl BuildNode for FilePath<'_> { fn size_in_bytes(&self) -> Result { let size = 4usize + size_of_val(self.path_name); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5499,7 +5499,7 @@ pub mod build { pub data: &'a [u8], } - unsafe impl<'a> BuildNode for PiwgFirmwareFile<'a> { + unsafe impl BuildNode for PiwgFirmwareFile<'_> { fn size_in_bytes(&self) -> Result { let size = 4usize + size_of_val(self.data); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5532,7 +5532,7 @@ pub mod build { pub data: &'a [u8], } - unsafe impl<'a> BuildNode for PiwgFirmwareVolume<'a> { + unsafe impl BuildNode for PiwgFirmwareVolume<'_> { fn size_in_bytes(&self) -> Result { let size = 4usize + size_of_val(self.data); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) @@ -5692,7 +5692,7 @@ pub mod build { pub description_string: &'a [u8], } - unsafe impl<'a> BuildNode for BootSpecification<'a> { + unsafe impl BuildNode for BootSpecification<'_> { fn size_in_bytes(&self) -> Result { let size = 8usize + size_of_val(self.description_string); u16::try_from(size).map_err(|_| BuildError::NodeTooBig) diff --git a/uefi/src/proto/driver/component_name.rs b/uefi/src/proto/driver/component_name.rs index 4c97c669f..046bb5c49 100644 --- a/uefi/src/proto/driver/component_name.rs +++ b/uefi/src/proto/driver/component_name.rs @@ -265,7 +265,7 @@ pub struct LanguageIter<'a> { kind: LanguageIterKind, } -impl<'a> LanguageIter<'a> { +impl LanguageIter<'_> { const fn new( languages: *const u8, kind: LanguageIterKind, diff --git a/uefi/src/proto/shim/mod.rs b/uefi/src/proto/shim/mod.rs index 158590bb8..e3d771ad1 100644 --- a/uefi/src/proto/shim/mod.rs +++ b/uefi/src/proto/shim/mod.rs @@ -45,7 +45,12 @@ pub struct Hashes { // These macros set the correct calling convention for the Shim protocol methods. -#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] +#[cfg(target_arch = "x86")] +macro_rules! shim_function { + (fn $args:tt -> $return_type:ty) => (extern "cdecl" fn $args -> $return_type) +} + +#[cfg(target_arch = "x86_64")] macro_rules! shim_function { (fn $args:tt -> $return_type:ty) => (extern "sysv64" fn $args -> $return_type) } diff --git a/uefi/src/proto/tcg/v1.rs b/uefi/src/proto/tcg/v1.rs index 801cc7bac..7f0dbceb2 100644 --- a/uefi/src/proto/tcg/v1.rs +++ b/uefi/src/proto/tcg/v1.rs @@ -258,7 +258,7 @@ pub struct EventLog<'a> { is_truncated: bool, } -impl<'a> EventLog<'a> { +impl EventLog<'_> { pub(super) const unsafe fn new( location: *const u8, last_entry: *const u8, diff --git a/uefi/src/proto/tcg/v2.rs b/uefi/src/proto/tcg/v2.rs index 1b45f130e..adf504dc5 100644 --- a/uefi/src/proto/tcg/v2.rs +++ b/uefi/src/proto/tcg/v2.rs @@ -231,7 +231,7 @@ struct AlgorithmDigestSize { #[derive(Clone, Debug)] struct AlgorithmDigestSizes<'a>(UnalignedSlice<'a, AlgorithmDigestSize>); -impl<'a> AlgorithmDigestSizes<'a> { +impl AlgorithmDigestSizes<'_> { fn get_size(&self, alg: AlgorithmId) -> Option { self.0.iter().find_map(|elem| { if { elem.algorithm_id } == alg { @@ -332,7 +332,7 @@ pub struct EventLog<'a> { is_truncated: bool, } -impl<'a> EventLog<'a> { +impl EventLog<'_> { /// Iterator of events in the log. #[must_use] pub fn iter(&self) -> EventLogIter { @@ -384,7 +384,7 @@ pub struct PcrEventDigests<'a> { algorithm_digest_sizes: AlgorithmDigestSizes<'a>, } -impl<'a> Debug for PcrEventDigests<'a> { +impl Debug for PcrEventDigests<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { f.debug_list().entries(self.clone()).finish() } diff --git a/xtask/src/device_path/group.rs b/xtask/src/device_path/group.rs index 9dbbb65bf..576a7540a 100644 --- a/xtask/src/device_path/group.rs +++ b/xtask/src/device_path/group.rs @@ -182,7 +182,7 @@ impl NodeGroup { #(#variants),* } - impl<'a> TryFrom<&DevicePathNode> for DevicePathNodeEnum<'a> { + impl TryFrom<&DevicePathNode> for DevicePathNodeEnum<'_> { type Error = NodeConversionError; fn try_from(node: &DevicePathNode) -> Result { diff --git a/xtask/src/device_path/node.rs b/xtask/src/device_path/node.rs index 2ee1ed83b..0965a5e10 100644 --- a/xtask/src/device_path/node.rs +++ b/xtask/src/device_path/node.rs @@ -477,13 +477,17 @@ impl Node { fn gen_builder_impl(&self) -> TokenStream { let struct_ident = &self.struct_ident; - let lifetime = self.builder_lifetime(); + let lifetime = if self.is_dst() { + Some(quote!(<'_>)) + } else { + None + }; let size_in_bytes_method = self.gen_builder_size_in_bytes_method(); let write_data_method = self.gen_builder_write_data_method(); quote!( - unsafe impl #lifetime BuildNode for #struct_ident #lifetime { + unsafe impl BuildNode for #struct_ident #lifetime { #size_in_bytes_method #write_data_method diff --git a/xtask/src/device_path/spec.rs b/xtask/src/device_path/spec.rs index 564b676ef..4b59ac99c 100644 --- a/xtask/src/device_path/spec.rs +++ b/xtask/src/device_path/spec.rs @@ -968,7 +968,7 @@ mod messaging { } #[build] - impl<'a> RestService<'a> { + impl RestService<'_> { fn build_size_vendor_guid_and_data(&self) -> usize { if let Some(src) = &self.vendor_guid_and_data { assert!(self.service_type == device_path::messaging::RestServiceType::VENDOR);