diff --git a/src/impls.rs b/src/impls.rs index 7fd6f8fb..96daea65 100644 --- a/src/impls.rs +++ b/src/impls.rs @@ -15,7 +15,7 @@ use crate::prelude::{ borrow::{Cow, ToOwned}, boxed::Box, - collections::{BTreeMap, BTreeSet, VecDeque}, + collections::{BTreeMap, BTreeSet, BinaryHeap, VecDeque}, fmt, marker::PhantomData, ops::{Range, RangeInclusive}, @@ -263,6 +263,20 @@ where } } +impl TypeInfo for BinaryHeap +where + T: TypeInfo + 'static, +{ + type Identity = Self; + + fn type_info() -> Type { + Type::builder() + .path(Path::prelude("BinaryHeap")) + .type_params(type_params![T]) + .composite(Fields::unnamed().field(|f| f.ty::<[T]>())) + } +} + impl TypeInfo for Box where T: TypeInfo + ?Sized + 'static, diff --git a/src/tests.rs b/src/tests.rs index 8ff51f95..115f46f8 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -17,7 +17,7 @@ use crate::{ prelude::{ borrow::Cow, boxed::Box, - collections::{BTreeMap, BTreeSet}, + collections::{BTreeMap, BTreeSet, BinaryHeap}, string::String, vec, }, @@ -132,6 +132,14 @@ fn collections() { .composite(Fields::unnamed().field(|f| f.ty::<[String]>())) ); + assert_type!( + BinaryHeap, + Type::builder() + .path(Path::prelude("BinaryHeap")) + .type_params(named_type_params![(T, String)]) + .composite(Fields::unnamed().field(|f| f.ty::<[String]>())) + ); + assert_type!( std::collections::VecDeque, TypeDefSequence::new(meta_type::())