Skip to content

Commit 2dcd782

Browse files
authored
Merge pull request #95 from hashmismatch/update-bitvec-and-clippy
Update bitvec dependency, clippy fixes
2 parents c48f4b8 + 872aa4a commit 2dcd782

33 files changed

+69
-72
lines changed

packed_struct/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ edition = "2018"
1616
packed_struct_codegen = { path = "../packed_struct_codegen/", version = "0.10.1" }
1717
serde = { version = "1.0", optional = true, default-features = false }
1818
serde_derive = { version = "1.0", optional = true }
19-
bitvec = { version = "0.22.3", default-features = false }
19+
bitvec = { version = "1.0", default-features = false }
2020

2121
[features]
2222
default = ["std"]

packed_struct/src/packing.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ pub trait PackedStructSlice where Self: Sized {
4444
}
4545

4646
#[cfg_attr(feature = "use_serde", derive(Serialize, Deserialize))]
47-
#[derive(Debug, Copy, Clone, PartialEq)]
47+
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
4848
/// Packing errors that might occur during packing or unpacking
4949
pub enum PackingError {
5050
InvalidValue,

packed_struct/src/types_bits.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ impl<const N: usize> ByteArray for [u8; N] {
6868
}
6969
}
7070

71-
#[derive(Default, Debug, Copy, Clone, PartialEq)]
71+
#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)]
7272
pub struct Bytes<const N: usize>;
7373

7474
impl<const N: usize> NumberOfBytes for Bytes<N> {
@@ -80,7 +80,7 @@ impl<const N: usize> NumberOfBytes for Bytes<N> {
8080
}
8181
}
8282

83-
#[derive(Default, Debug, Copy, Clone, PartialEq)]
83+
#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)]
8484
pub struct Bits<const N: usize>;
8585

8686
macro_rules! bits_type {

packed_struct/src/types_num.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ impl<T, B, I> PackedStruct for LsbInteger<T, B, I>
669669
let leftover_bits = B::number_of_bits() % 8;
670670

671671
let bytes_slice = bytes.as_mut_bytes_slice();
672-
let bits = BitSlice::<Msb0, _>::from_slice_mut(bytes_slice).map_err(|_| PackingError::BitsError)?;
672+
let bits = BitSlice::<_, Msb0>::try_from_slice_mut(bytes_slice).map_err(|_| PackingError::BitsError)?;
673673
let s = l - B::number_of_bits();
674674
let (left, _) = bits.split_at_mut(l - leftover_bits);
675675
left.shift_right(s);
@@ -690,7 +690,7 @@ impl<T, B, I> PackedStruct for LsbInteger<T, B, I>
690690

691691
let mut src_bytes = (*src).clone();
692692
let bytes_slice = src_bytes.as_mut_bytes_slice();
693-
let bits = BitSlice::<Msb0, _>::from_slice_mut(bytes_slice).map_err(|_| PackingError::BitsError)?;
693+
let bits = BitSlice::<_, Msb0>::try_from_slice_mut(bytes_slice).map_err(|_| PackingError::BitsError)?;
694694
let s = l - B::number_of_bits();
695695
let (left, _) = bits.split_at_mut(l - leftover_bits);
696696
left.shift_left(s);

packed_struct_codegen/src/pack.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub struct FieldMidPositioning {
1313
pub enum FieldKind {
1414
Regular {
1515
ident: syn::Ident,
16-
field: FieldRegular
16+
field: Box<FieldRegular>
1717
},
1818
Array {
1919
ident: syn::Ident,

packed_struct_codegen/src/pack_codegen_docs.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub fn struct_runtime_formatter(parsed: &PackStruct) -> syn::Result<proc_macro2:
3535
},
3636
FieldKind::Array { ref ident, ref elements, .. } => {
3737
for (i, field) in elements.iter().enumerate() {
38-
let name_str = format!("{}[{}]", ident.to_string(), i);
38+
let name_str = format!("{}[{}]", ident, i);
3939
let bits: syn::ExprRange = syn::parse_str(&format!("{}..{}", field.bit_range.start, field.bit_range.end))?;
4040

4141
debug_fields.push(quote! {
@@ -136,7 +136,7 @@ pub fn type_docs(parsed: &PackStruct) -> proc_macro2::TokenStream {
136136
},
137137
FieldKind::Array { ref ident, ref elements, .. } => {
138138
for (i, field) in elements.iter().enumerate() {
139-
emit_field_docs(&field.bit_range, format!("{}[{}]", ident.to_string(), i), &field.ty);
139+
emit_field_docs(&field.bit_range, format!("{}[{}]", ident, i), &field.ty);
140140
}
141141
}
142142
}

packed_struct_codegen/src/pack_parse.rs

+8-11
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,8 @@ pub fn parse_sub_attributes(attributes: &[syn::Attribute], main_attribute: &str,
3030
syn::Meta::Path(_) => {}
3131
syn::Meta::List(_) => {}
3232
syn::Meta::NameValue(nv) => {
33-
match (nv.path.get_ident(), &nv.lit) {
34-
(Some(key), syn::Lit::Str(lit)) => {
35-
r.push((key.to_string(), lit.value()));
36-
},
37-
(_, _) => ()
33+
if let (Some(key), syn::Lit::Str(lit)) = (nv.path.get_ident(), &nv.lit) {
34+
r.push((key.to_string(), lit.value()));
3835
}
3936
}
4037
}
@@ -52,7 +49,7 @@ pub fn parse_sub_attributes(attributes: &[syn::Attribute], main_attribute: &str,
5249
}
5350

5451

55-
#[derive(Clone, Copy, Debug, PartialEq)]
52+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5653
/// https://en.wikipedia.org/wiki/Bit_numbering
5754
pub enum BitNumbering {
5855
Lsb0,
@@ -184,7 +181,7 @@ fn get_field_mid_positioning(field: &syn::Field) -> syn::Result<FieldMidPosition
184181
} else if let Some(bits) = field_attributes.iter().filter_map(|a| if let PackFieldAttribute::ElementSizeBits(bits) = *a { Some(bits) } else { None }).next() {
185182
bits * array_size
186183
} else if let BitsPositionParsed::Range(a, b) = bits_position {
187-
(b as isize - a as isize).abs() as usize + 1
184+
(b as isize - a as isize).unsigned_abs() as usize + 1
188185
} else if let Some(bit_width_builtin) = bit_width_builtin {
189186
// todo: is it even possible to hit this branch?
190187
bit_width_builtin * array_size
@@ -205,7 +202,7 @@ fn parse_field(field: &syn::Field, mp: &FieldMidPositioning, bit_range: &Range<u
205202
syn::Type::Path(_) => {
206203
return Ok(
207204
FieldKind::Regular {
208-
field: parse_reg_field(field, &field.ty, bit_range, default_endianness)?,
205+
field: Box::new(parse_reg_field(field, &field.ty, bit_range, default_endianness)?),
209206
ident: field.ident.clone().ok_or_else(|| syn::Error::new(field.span(), "Missing ident!"))?
210207
}
211208
);
@@ -319,7 +316,7 @@ fn parse_reg_field(field: &syn::Field, ty: &syn::Type, bit_range: &Range<usize>,
319316

320317

321318

322-
#[derive(Copy, Clone, Debug, PartialEq)]
319+
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
323320
pub enum BitsPositionParsed {
324321
Next,
325322
Start(usize),
@@ -442,7 +439,7 @@ pub fn parse_struct(ast: &syn::DeriveInput) -> syn::Result<PackStruct> {
442439

443440
let num_bytes = (num_bits as f32 / 8.0).ceil() as usize;
444441

445-
if first_field_is_auto_positioned && (num_bits % 8) != 0 && struct_size_bytes == None {
442+
if first_field_is_auto_positioned && (num_bits % 8) != 0 && struct_size_bytes.is_none() {
446443
return Err(syn::Error::new(fields[0].span(), "Please explicitly position the bits of the first field of this structure, as the alignment isn't obvious to the end user."));
447444
}
448445

@@ -468,7 +465,7 @@ pub fn parse_struct(ast: &syn::DeriveInput) -> syn::Result<PackStruct> {
468465
},
469466
FieldKind::Array { ref ident, ref elements, .. } => {
470467
for (i, field) in elements.iter().enumerate() {
471-
find_overlaps(format!("{}[{}]", ident.to_string(), i), &field.bit_range)?;
468+
find_overlaps(format!("{}[{}]", ident, i), &field.bit_range)?;
472469
}
473470
}
474471
}

packed_struct_codegen/src/pack_parse_attributes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ pub fn parse_position_val(v: &str, multiplier: usize) -> Result<BitsPositionPars
187187
let n = parse_num(&v)?;
188188
return Ok(BitsPositionParsed::Start(n * multiplier));
189189
} else if v.ends_with(':') {
190-
let v = v.replace(":", "");
190+
let v = v.replace(':', "");
191191
let n = parse_num(&v)?;
192192
return Ok(BitsPositionParsed::Start(n * multiplier));
193193
} else if v.contains(':') || v.contains("..=") {

packed_struct_tests/tests/debug_fields.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub enum DataRate {
1818
}
1919

2020
// Imaginary register, for test purposes only
21-
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq)]
21+
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq, Eq)]
2222
#[packed_struct(bit_numbering="msb0")]
2323
/// Control register 4
2424
pub struct ControlRegister4 {

packed_struct_tests/tests/enum_packing.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PackedStruct, PartialEq, Debug, Copy, Clone)]
3+
#[derive(PackedStruct, PartialEq, Eq, Debug, Copy, Clone)]
44
#[packed_struct(bit_numbering="msb0")]
55
pub struct TestPack {
66
#[packed_field(bits = "2:3", ty="enum")]
@@ -9,7 +9,7 @@ pub struct TestPack {
99
enabled: bool
1010
}
1111

12-
#[derive(PrimitiveEnum_u8, PartialEq, Debug, Clone, Copy)]
12+
#[derive(PrimitiveEnum_u8, PartialEq, Eq, Debug, Clone, Copy)]
1313
pub enum SelfTestMode {
1414
NormalMode = 0,
1515
PositiveSignSelfTest = 1,

packed_struct_tests/tests/enum_packing_2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub enum DataRate {
1818
}
1919

2020
// Imaginary register, for test purposes only
21-
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq)]
21+
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq, Eq)]
2222
#[packed_struct(bit_numbering="msb0")]
2323
/// Control register 4
2424
pub struct ControlRegister4 {

packed_struct_tests/tests/enum_packing_3.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PackedStruct, PartialEq, Debug, Copy, Clone)]
3+
#[derive(PackedStruct, PartialEq, Eq, Debug, Copy, Clone)]
44
#[packed_struct(endian="msb")]
55
pub struct TestPack {
66
a1: i32,
@@ -11,13 +11,13 @@ pub struct TestPack {
1111
mode: SelfTestMode
1212
}
1313

14-
#[derive(PackedStruct, PartialEq, Debug, Copy, Clone)]
14+
#[derive(PackedStruct, PartialEq, Eq, Debug, Copy, Clone)]
1515
pub struct TestPackMode {
1616
#[packed_field(size_bytes="1", ty="enum")]
1717
mode: SelfTestMode
1818
}
1919

20-
#[derive(PrimitiveEnum_u8, PartialEq, Debug, Clone, Copy)]
20+
#[derive(PrimitiveEnum_u8, PartialEq, Eq, Debug, Clone, Copy)]
2121
pub enum SelfTestMode {
2222
NormalMode = 0,
2323
PositiveSignSelfTest = 1,

packed_struct_tests/tests/packing_arrays.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use packed_struct::prelude::*;
44
#[cfg(test)]
55
fn test_packed_arrays() {
66

7-
#[derive(PackedStruct, PartialEq, Debug)]
7+
#[derive(PackedStruct, PartialEq, Eq, Debug)]
88
#[packed_struct(size_bytes="7")]
99
pub struct Arrays {
1010
arr1: [u8; 7]
@@ -24,14 +24,14 @@ fn test_packed_arrays() {
2424
#[test]
2525
fn test_packed_array_of_structs() {
2626

27-
#[derive(PackedStruct, Debug, PartialEq)]
27+
#[derive(PackedStruct, Debug, PartialEq, Eq)]
2828
#[packed_struct(size_bytes="6", endian="msb")]
2929
pub struct Simple {
3030
f1: u16,
3131
f2: u32
3232
}
3333

34-
#[derive(PackedStruct, Debug, PartialEq)]
34+
#[derive(PackedStruct, Debug, PartialEq, Eq)]
3535
pub struct Packaged {
3636
#[packed_field(element_size_bytes="6")]
3737
p: [Simple; 4]

packed_struct_tests/tests/packing_autosize.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use packed_struct::prelude::*;
33
#[test]
44
fn test_serialization_autosize_msb0() {
55

6-
#[derive(PackedStruct, PartialEq, Debug)]
6+
#[derive(PackedStruct, PartialEq, Debug, Eq)]
77
#[packed_struct(bit_numbering="msb0")]
88
pub struct Bools {
99
#[packed_field(bits="8")]
@@ -27,7 +27,7 @@ fn test_serialization_autosize_msb0() {
2727
#[test]
2828
fn test_serialization_autosize_lsb0() {
2929
// todo: LSB0 mode should be able to figure out its own size
30-
#[derive(PackedStruct, PartialEq, Debug)]
30+
#[derive(PackedStruct, PartialEq, Debug, Eq)]
3131
#[packed_struct(size_bytes="2", bit_numbering="lsb0")]
3232
pub struct Bools {
3333
#[packed_field(bits="15")]

packed_struct_tests/tests/packing_bit_positioning.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PackedStruct, PartialEq, Debug)]
3+
#[derive(PackedStruct, PartialEq, Eq, Debug)]
44
#[packed_struct(bit_numbering="msb0")]
55
pub struct SmallInts {
66
#[packed_field(bits="0:2")]
@@ -32,7 +32,7 @@ fn test_packing_bit_positions() {
3232
}
3333

3434

35-
#[derive(PackedStruct, PartialEq, Debug)]
35+
#[derive(PackedStruct, PartialEq, Eq, Debug)]
3636
#[packed_struct(size_bytes="1", bit_numbering="lsb0")]
3737
pub struct SmallIntsLsb {
3838
#[packed_field(bits="2:0")]
@@ -59,7 +59,7 @@ fn test_packing_bit_positions_lsb() {
5959

6060
#[test]
6161
fn test_packing_byte_position() {
62-
#[derive(Copy, Clone, Debug, PartialEq, PackedStruct)]
62+
#[derive(Copy, Clone, Debug, PartialEq, Eq, PackedStruct)]
6363
#[packed_struct(bit_numbering="msb0", endian="msb")]
6464
pub struct BufferChecksum {
6565
#[packed_field(bytes="0")]

packed_struct_tests/tests/packing_codegen_1.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use packed_struct::prelude::*;
33
#[test]
44
fn test_serialization_codegen() {
55

6-
#[derive(PackedStruct, PartialEq, Debug)]
6+
#[derive(PackedStruct, PartialEq, Eq, Debug)]
77
#[packed_struct(size_bytes="4", bit_numbering="msb0")]
88
pub struct Bools {
99
#[packed_field(bits="0")]

packed_struct_tests/tests/packing_codegen_2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PackedStruct, Debug, PartialEq)]
3+
#[derive(PackedStruct, Debug, PartialEq, Eq)]
44
#[packed_struct(bit_numbering="msb0")]
55
pub struct SampleRegister {
66
#[packed_field(bits="1")]

packed_struct_tests/tests/packing_compact_byte.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use packed_struct::prelude::*;
44
#[cfg(test)]
55
fn test_packed_compact_byte() {
66

7-
#[derive(PackedStruct, PartialEq, Debug)]
7+
#[derive(PackedStruct, PartialEq, Debug, Eq)]
88
#[packed_struct(size_bytes="1", bit_numbering="msb0")]
99
pub struct RegA {
1010
#[packed_field(bits="0:2")]

packed_struct_tests/tests/packing_enum_16bit.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PrimitiveEnum_u16, PartialEq, Debug, Clone, Copy)]
3+
#[derive(PrimitiveEnum_u16, PartialEq, Eq, Debug, Clone, Copy)]
44
pub enum LargeEnum {
55
Value1 = 1,
66
Value1024 = 1024,
77
Value4096 = 4096
88
}
99

10-
#[derive(PackedStruct, PartialEq, Debug, Clone, Copy)]
10+
#[derive(PackedStruct, PartialEq, Eq, Debug, Clone, Copy)]
1111
#[packed_struct(size_bytes="2", bit_numbering="msb0", endian="msb")]
1212
pub struct StructWithBitsEnum {
1313
#[packed_field(bits="0..16", ty="enum")]

packed_struct_tests/tests/packing_lsb_bit_order.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use packed_struct::prelude::*;
22

33
// both orders (high-low, low-high) should be supported!
44

5-
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq)]
5+
#[derive(PackedStruct, Copy, Clone, Debug, PartialEq, Eq)]
66
#[packed_struct(size_bytes="1", bit_numbering="lsb0")]
77
pub struct IntsLsbPosBits {
88
#[packed_field(bits="0:3")]

packed_struct_tests/tests/packing_msp.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use packed_struct::prelude::*;
44
#[cfg(test)]
55
fn test_packed_struct_msp() {
66

7-
#[derive(PackedStruct, PartialEq, Debug)]
7+
#[derive(PackedStruct, PartialEq, Eq, Debug)]
88
#[packed_struct(size_bytes="4", endian="lsb")]
99
pub struct MspStatus {
1010
cycle_time: u16,

packed_struct_tests/tests/packing_primitives.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn test_packed_primitives() {
2929
#[cfg(test)]
3030
fn test_packed_int_msb_endian() {
3131

32-
#[derive(Copy, Clone, Debug, Default, PartialEq, PackedStruct)]
32+
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PackedStruct)]
3333
#[packed_struct(endian="msb", bit_numbering="msb0")]
3434
pub struct IntsMsb {
3535
#[packed_field(bytes="0")]
@@ -58,7 +58,7 @@ fn test_packed_int_msb_endian() {
5858
#[cfg(test)]
5959
fn test_packed_int_lsb_endian() {
6060

61-
#[derive(Copy, Clone, Debug, Default, PartialEq, PackedStruct)]
61+
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PackedStruct)]
6262
#[packed_struct(endian="lsb", bit_numbering="msb0")]
6363
pub struct IntsLsb {
6464
#[packed_field(bytes="0")]

packed_struct_tests/tests/packing_reserved.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PackedStruct, Default, Copy, Clone, PartialEq)]
3+
#[derive(PackedStruct, Default, Copy, Clone, PartialEq, Eq)]
44
#[packed_struct(bit_numbering="msb0")]
55
pub struct StructOne {
66
#[packed_field(bits="0:3")]

packed_struct_tests/tests/packing_tiny_flags.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use packed_struct::prelude::*;
33
#[test]
44
fn test_tiny_flags() {
55

6-
#[derive(PackedStruct, Debug, PartialEq)]
6+
#[derive(PackedStruct, Debug, PartialEq, Eq)]
77
#[packed_struct(bit_numbering="msb0")]
88
pub struct TinyFlags {
99
#[packed_field(bits="4")]
@@ -23,7 +23,7 @@ fn test_tiny_flags() {
2323
let unpacked = TinyFlags::unpack(&packed).unwrap();
2424
assert_eq!(unpacked, flag);
2525

26-
#[derive(PackedStruct, Debug, PartialEq)]
26+
#[derive(PackedStruct, Debug, PartialEq, Eq)]
2727
#[packed_struct]
2828
pub struct Settings {
2929
#[packed_field(element_size_bits="4")]

packed_struct_tests/tests/primitive_enum.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use packed_struct::prelude::*;
22

3-
#[derive(PrimitiveEnum_u8, PartialEq, Debug, Clone, Copy)]
3+
#[derive(PrimitiveEnum_u8, PartialEq, Eq, Debug, Clone, Copy)]
44
pub enum SelfTestMode {
55
NormalMode = 0,
66
PositiveSignSelfTest,

0 commit comments

Comments
 (0)