Skip to content

Commit e7178ec

Browse files
authored
Impl Bake for BTreeMap (#4274)
Part of #4266
1 parent 62ccc20 commit e7178ec

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

utils/databake/src/alloc.rs

+27
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,33 @@ fn btree_set() {
7979
);
8080
}
8181

82+
impl<K, V> Bake for alloc::collections::BTreeMap<K, V>
83+
where
84+
K: Bake,
85+
V: Bake,
86+
{
87+
fn bake(&self, ctx: &CrateEnv) -> TokenStream {
88+
ctx.insert("alloc");
89+
let data = self.iter().map(|(k, v)| {
90+
let k = k.bake(ctx);
91+
let v = v.bake(ctx);
92+
quote!((#k, #v))
93+
});
94+
quote! {
95+
alloc::collections::BTreeMap::from([#(#data),*])
96+
}
97+
}
98+
}
99+
100+
#[test]
101+
fn btree_map() {
102+
test_bake!(
103+
alloc::collections::BTreeMap<u8, u8>,
104+
alloc::collections::BTreeMap::from([(1u8, 2u8), (2u8, 4u8)]),
105+
alloc
106+
);
107+
}
108+
82109
impl Bake for String {
83110
fn bake(&self, _: &CrateEnv) -> TokenStream {
84111
quote! {

0 commit comments

Comments
 (0)