Skip to content

Conversation

JamieTsai1024
Copy link
Contributor

Converted unsigned (u32, u64) converter functions in src/serde_helpers.rs to use serde_conv macro for serializing and deserializing optional and vector fields with serde_with.

  • Added tests for <T>, Option<T>, and Vec<T> fields (de)serialized using structs
  • Added documentation for modules and structs
Old New
u32_as_timestamp u32::AsTimestamp (u32 → Timestamp)
timestamp_as_u32 u32::FromTimestamp (Timestamp → u32)
u32_as_f64 u32::AsF64 (u32 → f64)
serialize_u32_as_i32 u32::AsI32 (u32 → i32)
serialize_u32_as_i64 u32::AsI64 (u32 → i64)
u64_as_f64 u64::AsF64 (u64 → f64)
serialize_u64_as_i32 u64::AsI32 (u64 → i32)
serialize_u64_as_i64 u64::AsI64 (u64 → i64)

Previously:

  • Rewrote serde converters as structs with SerializeAs and DeserializeAs traits to support Optional and Vector conversions in PR #559
  • Adapted serde_conv macro to support Rustdocs, refactored all ObjectId converters in PR #566
  • Refactored all DateTime converters PR #570

@JamieTsai1024 JamieTsai1024 marked this pull request as ready for review July 17, 2025 21:10
@JamieTsai1024 JamieTsai1024 requested a review from a team as a code owner July 17, 2025 21:10
body: TimestampBody,
}

/// Serializes a u32 as an i64.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved this helper from src/serde_helpers.rs. Its use in the Timestamp serializer cannot be replaced with the new u32::AsI64 implementation since it relies on the optional dependency serde_with (behind serde_with-3 feature flag).

}

/// Serializes a u32 as an i64.
pub fn serialize_u32_as_i64<S: Serializer>(val: &u32, serializer: S) -> Result<S::Ok, S::Error> {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved to src/extjson/models.rs

@JamieTsai1024 JamieTsai1024 merged commit 3b34ff9 into mongodb:main Jul 21, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants