diff --git a/mavlink-bindgen/src/parser.rs b/mavlink-bindgen/src/parser.rs index 98286f6b418..3a42ef2600f 100644 --- a/mavlink-bindgen/src/parser.rs +++ b/mavlink-bindgen/src/parser.rs @@ -746,11 +746,7 @@ impl MavMessage { // If sent by an implementation that doesn't have the extensions fields // then the recipient will see zero values for the extensions fields. let serde_default = if field.is_extension { - if field.enumtype.is_some() { - quote!(#[cfg_attr(feature = "serde", serde(default))]) - } else { - quote!(#[cfg_attr(feature = "serde", serde(default = "crate::RustDefault::rust_default"))]) - } + quote!(#[cfg_attr(feature = "serde", serde(default))]) } else { quote!() }; diff --git a/mavlink-core/src/lib.rs b/mavlink-core/src/lib.rs index dbe5ed5c1f7..c1d17879297 100644 --- a/mavlink-core/src/lib.rs +++ b/mavlink-core/src/lib.rs @@ -90,8 +90,6 @@ use core::result::Result; use std::io::{Read, Write}; pub mod utils; -#[allow(unused_imports)] -use utils::{remove_trailing_zeroes, RustDefault}; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; diff --git a/mavlink-core/src/types.rs b/mavlink-core/src/types.rs index ee72e056320..3b5f2ac635f 100644 --- a/mavlink-core/src/types.rs +++ b/mavlink-core/src/types.rs @@ -115,9 +115,9 @@ impl From<&str> for CharArray { } } -impl crate::utils::RustDefault for CharArray { +impl Default for CharArray { #[inline(always)] - fn rust_default() -> Self { + fn default() -> Self { Self::new([0u8; N]) } } diff --git a/mavlink-core/src/utils.rs b/mavlink-core/src/utils.rs index 0603c77f61d..2eed9c88aa7 100644 --- a/mavlink-core/src/utils.rs +++ b/mavlink-core/src/utils.rs @@ -16,47 +16,6 @@ pub fn remove_trailing_zeroes(data: &[u8]) -> usize { len } -/// A trait very similar to [`Default`] but is only implemented for the equivalent Rust types to -/// `MavType`s. -/// -/// This is only needed because rust doesn't currently implement `Default` for arrays -/// of all sizes. In particular this trait is only ever used when the "serde" feature is enabled. -/// For more information, check out [this issue](https://users.rust-lang.org/t/issue-for-derives-for-arrays-greater-than-size-32/59055/3). -pub trait RustDefault: Copy { - fn rust_default() -> Self; -} - -impl RustDefault for [T; N] { - #[inline(always)] - fn rust_default() -> Self { - let val: T = RustDefault::rust_default(); - [val; N] - } -} - -macro_rules! impl_rust_default { - ($($t:ty => $val:expr),* $(,)?) => { - $(impl RustDefault for $t { - #[inline(always)] - fn rust_default() -> Self { $val } - })* - }; -} - -impl_rust_default! { - u8 => 0, - i8 => 0, - u16 => 0, - i16 => 0, - u32 => 0, - i32 => 0, - u64 => 0, - i64 => 0, - f32 => 0.0, - f64 => 0.0, - char => '\0', -} - #[cfg(test)] mod tests { use super::*; diff --git a/mavlink/src/lib.rs b/mavlink/src/lib.rs index 836ff57af6b..02c0067d08c 100644 --- a/mavlink/src/lib.rs +++ b/mavlink/src/lib.rs @@ -63,10 +63,6 @@ include!(concat!(env!("OUT_DIR"), "/mod.rs")); pub use mavlink_core::*; -#[cfg(feature = "emit-extensions")] -#[allow(unused_imports)] -pub(crate) use mavlink_core::utils::RustDefault; - #[cfg(feature = "serde")] #[allow(unused_imports)] pub(crate) use mavlink_core::utils::nulstr;