From 0de75f763ef7218c30bdeb32063cedf65d3e2f8f Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Thu, 15 Apr 2021 17:01:40 +0100 Subject: [PATCH] Implement `TypeInfo` for `BTreeSet` --- src/impls.rs | 19 ++++++++++++++++++- src/tests.rs | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/impls.rs b/src/impls.rs index e15946e3..16da5b06 100644 --- a/src/impls.rs +++ b/src/impls.rs @@ -18,7 +18,10 @@ use crate::prelude::{ ToOwned, }, boxed::Box, - collections::BTreeMap, + collections::{ + BTreeMap, + BTreeSet, + }, marker::PhantomData, string::String, vec::Vec, @@ -185,6 +188,20 @@ where } } +impl TypeInfo for BTreeSet +where + T: TypeInfo + 'static, +{ + type Identity = Self; + + fn type_info() -> Type { + Type::builder() + .path(Path::prelude("BTreeSet")) + .type_params(tuple_meta_type![T]) + .composite(Fields::unnamed().field_of::<[T]>("[T]")) + } +} + impl TypeInfo for Box where T: TypeInfo + ?Sized + 'static, diff --git a/src/tests.rs b/src/tests.rs index 3fdd3bc4..fea9a82e 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -17,6 +17,10 @@ use crate::{ prelude::{ borrow::Cow, boxed::Box, + collections::{ + BTreeMap, + BTreeSet, + }, string::String, vec, }, @@ -84,6 +88,25 @@ fn prelude_items() { ); } +#[test] +fn collections() { + assert_type!( + BTreeMap, + Type::builder() + .path(Path::prelude("BTreeMap")) + .type_params(tuple_meta_type![(String, u32)]) + .composite(Fields::unnamed().field_of::<[(String, u32)]>("[(K, V)]")) + ); + + assert_type!( + BTreeSet, + Type::builder() + .path(Path::prelude("BTreeSet")) + .type_params(tuple_meta_type![String]) + .composite(Fields::unnamed().field_of::<[String]>("[T]")) + ); +} + #[test] fn scale_compact_types() { assert_type!(Compact, TypeDefCompact::new(meta_type::()))