From 558192f716c95acae4db35f532611900d76c54c2 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Thu, 15 Jun 2023 12:34:44 +0300 Subject: [PATCH] Implement `TypeInfo` for `Duration` --- src/impls.rs | 19 +++++++++++++++++++ src/prelude.rs | 2 ++ 2 files changed, 21 insertions(+) diff --git a/src/impls.rs b/src/impls.rs index d16044ee..8fa8e606 100644 --- a/src/impls.rs +++ b/src/impls.rs @@ -31,6 +31,7 @@ use crate::prelude::{ }, string::String, sync::Arc, + time::Duration, vec::Vec, }; @@ -161,6 +162,24 @@ impl_for_non_zero!( NonZeroU128: u128 ); +impl TypeInfo for Duration { + type Identity = Self; + + fn type_info() -> Type { + Type::builder().path(Path::prelude("Duration")).composite( + Fields::unnamed() + .field(|f| { + // Seconds + f.ty::().type_name("u64") + }) + .field(|f| { + // Nanoseconds + f.ty::().type_name("u32") + }), + ) + } +} + impl TypeInfo for Vec where T: TypeInfo + 'static, diff --git a/src/prelude.rs b/src/prelude.rs index f7f64eb4..7b7ea3c9 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -38,6 +38,7 @@ cfg_if! { ops, string, sync, + time, vec, }; } else { @@ -60,6 +61,7 @@ cfg_if! { mem, num, ops, + time, }; } }