diff --git a/src/ser/flavors.rs b/src/ser/flavors.rs index a162432..7519ccb 100644 --- a/src/ser/flavors.rs +++ b/src/ser/flavors.rs @@ -638,10 +638,10 @@ pub mod crc { /// /// When successful, this function returns the slice containing the /// serialized and encoded message. - pub fn []<'a, 'b, T>( - value: &'b T, + pub fn []<'a, T>( + value: &T, buf: &'a mut [u8], - digest: Digest<'a, $int>, + digest: Digest<'_, $int>, ) -> Result<&'a mut [u8]> where T: Serialize + ?Sized, @@ -653,9 +653,9 @@ pub mod crc { /// data followed by a CRC. The CRC bytes are included in the output `Vec`. #[cfg(feature = "heapless")] #[cfg_attr(doc_cfg, doc(cfg(feature = "heapless")))] - pub fn []<'a, T, const B: usize>( + pub fn []( value: &T, - digest: Digest<'a, $int>, + digest: Digest<'_, $int>, ) -> Result> where T: Serialize + ?Sized, @@ -669,7 +669,7 @@ pub mod crc { /// data followed by a CRC. The CRC bytes are included in the output `Vec`. #[cfg(feature = "alloc")] #[cfg_attr(doc_cfg, doc(cfg(feature = "alloc")))] - pub fn []<'a, T>(value: &T, digest: Digest<'a, $int>) -> Result> + pub fn [](value: &T, digest: Digest<'_, $int>) -> Result> where T: Serialize + ?Sized, { diff --git a/src/ser/mod.rs b/src/ser/mod.rs index 5d44abb..eddf826 100644 --- a/src/ser/mod.rs +++ b/src/ser/mod.rs @@ -339,10 +339,10 @@ where #[cfg(feature = "use-crc")] #[cfg_attr(doc_cfg, doc(cfg(feature = "use-crc")))] #[inline] -pub fn to_slice_crc32<'a, 'b, T>( - value: &'b T, +pub fn to_slice_crc32<'a, T>( + value: &T, buf: &'a mut [u8], - digest: crc::Digest<'a, u32>, + digest: crc::Digest<'_, u32>, ) -> Result<&'a mut [u8]> where T: Serialize + ?Sized, @@ -375,9 +375,9 @@ where #[cfg(all(feature = "use-crc", feature = "heapless"))] #[cfg_attr(doc_cfg, doc(cfg(all(feature = "use-crc", feature = "heapless"))))] #[inline] -pub fn to_vec_crc32<'a, T, const B: usize>( +pub fn to_vec_crc32( value: &T, - digest: crc::Digest<'a, u32>, + digest: crc::Digest<'_, u32>, ) -> Result> where T: Serialize + ?Sized, @@ -409,7 +409,7 @@ where #[cfg(all(feature = "use-crc", feature = "use-std"))] #[cfg_attr(doc_cfg, doc(cfg(all(feature = "use-crc", feature = "use-std"))))] #[inline] -pub fn to_stdvec_crc32<'a, T>(value: &T, digest: crc::Digest<'a, u32>) -> Result> +pub fn to_stdvec_crc32(value: &T, digest: crc::Digest<'_, u32>) -> Result> where T: Serialize + ?Sized, { @@ -440,9 +440,9 @@ where #[cfg(all(feature = "use-crc", feature = "alloc"))] #[cfg_attr(doc_cfg, doc(cfg(all(feature = "use-crc", feature = "alloc"))))] #[inline] -pub fn to_allocvec_crc32<'a, T>( +pub fn to_allocvec_crc32( value: &T, - digest: crc::Digest<'a, u32>, + digest: crc::Digest<'_, u32>, ) -> Result> where T: Serialize + ?Sized, diff --git a/tests/crc.rs b/tests/crc.rs index 1739139..6e7a2f9 100644 --- a/tests/crc.rs +++ b/tests/crc.rs @@ -58,3 +58,28 @@ fn test_crc_error() { assert_eq!(res, Err(postcard::Error::DeserializeBadCrc)); } + +#[test] +#[cfg(feature = "use-crc")] +fn test_crc_in_method() { + use crc::{Crc, CRC_32_ISCSI}; + use postcard::{to_slice_crc32, Result}; + use serde::Serialize; + + #[derive(Debug, Serialize)] + pub struct Thing { + value: u32, + } + + impl Thing { + pub fn to_bytes<'a>(&self, buf: &'a mut [u8]) -> Result<&'a mut [u8]> { + let crc = Crc::::new(&CRC_32_ISCSI); + to_slice_crc32(self, buf, crc.digest()) + } + } + + let buffer = &mut [0u8; 5]; + let thing = Thing { value: 42 }; + let slice = thing.to_bytes(buffer).unwrap(); + assert_eq!(slice, &[0x2A, 0xB7, 0xF5, 0x22, 0x19]); +}