use std::any::TypeId;
use std::collections::HashMap;
use std::{collections::HashSet, hash::Hash};
#[derive(Debug)]
struct BinaryBox(TypeId, Box<[u8]>);
impl PartialEq for BinaryBox {
fn eq(&self, other: &Self) -> bool {
self.0 == other.0 && self.1 == other.1
}
}
impl Eq for BinaryBox {}
impl Hash for BinaryBox {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.0.hash(state);
self.1.hash(state);
}
}
fn main() {
let mut set = HashMap::<BinaryBox, BinaryBox>::new();
set.insert(
BinaryBox(
TypeId::of::<&str>(),
"Key".as_bytes().to_vec().into_boxed_slice(),
),
BinaryBox(TypeId::of::<i32>(), Box::new(123i32.to_ne_bytes())),
);
println!("{:?}", set);
}
dXNlIHN0ZDo6YW55OjpUeXBlSWQ7CnVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFwOwp1c2Ugc3RkOjp7Y29sbGVjdGlvbnM6Okhhc2hTZXQsIGhhc2g6Okhhc2h9OwojW2Rlcml2ZShEZWJ1ZyldCnN0cnVjdCBCaW5hcnlCb3goVHlwZUlkLCBCb3g8W3U4XT4pOwppbXBsIFBhcnRpYWxFcSBmb3IgQmluYXJ5Qm94IHsKICAgIGZuIGVxKCZzZWxmLCBvdGhlcjogJlNlbGYpIC0+IGJvb2wgewogICAgICAgIHNlbGYuMCA9PSBvdGhlci4wICYmIHNlbGYuMSA9PSBvdGhlci4xCiAgICB9Cn0KaW1wbCBFcSBmb3IgQmluYXJ5Qm94IHt9CmltcGwgSGFzaCBmb3IgQmluYXJ5Qm94IHsKICAgIGZuIGhhc2g8SDogc3RkOjpoYXNoOjpIYXNoZXI+KCZzZWxmLCBzdGF0ZTogJm11dCBIKSB7CiAgICAgICAgc2VsZi4wLmhhc2goc3RhdGUpOwogICAgICAgIHNlbGYuMS5oYXNoKHN0YXRlKTsKICAgIH0KfQpmbiBtYWluKCkgewogICAgbGV0IG11dCBzZXQgPSBIYXNoTWFwOjo8QmluYXJ5Qm94LCBCaW5hcnlCb3g+OjpuZXcoKTsKICAgIHNldC5pbnNlcnQoCiAgICAgICAgQmluYXJ5Qm94KAogICAgICAgICAgICBUeXBlSWQ6Om9mOjo8JnN0cj4oKSwKICAgICAgICAgICAgIktleSIuYXNfYnl0ZXMoKS50b192ZWMoKS5pbnRvX2JveGVkX3NsaWNlKCksCiAgICAgICAgKSwKICAgICAgICBCaW5hcnlCb3goVHlwZUlkOjpvZjo6PGkzMj4oKSwgQm94OjpuZXcoMTIzaTMyLnRvX25lX2J5dGVzKCkpKSwKICAgICk7CiAgICBwcmludGxuISgiezo/fSIsIHNldCk7Cn0K
{BinaryBox(TypeId { t: 1229646359891580772 }, [75, 101, 121]): BinaryBox(TypeId { t: 13431306602944299956 }, [123, 0, 0, 0])}