struct IndexedObject<T> {
inner: Vec<T>,
}
impl Deref<Vec<T>> for IndexedObject<T> {
fn deref(&self) {
}
}
impl Serialize for IndexedObject {
}
impl Deserialize for IndexedObject {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer
{
deserializer.deserialize_map(IndexedObjectVisitor::new())
}
}
struct IndexedObjectVisitor<T> {
marker: PhantomData<Index<V>>
}
impl<T> MyMapVisitor<T> {
fn new() -> Self {
MyMapVisitor {
marker: PhantomData
}
}
}
impl<T> de::Visitor for MyMapVisitor<T>
where T: Deserialize,
{
type Value = IndexedObject<T>;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("a very special map")
}
fn visit_map<M>(self, mut visitor: M) -> Result<Self::Value, M::Error>
where M: de::MapVisitor
{
let mut values = MyMap::with_capacity(visitor.size_hint().0);
while let Some((key, value)) = visitor.visit()? {
values.insert(key, value);
}
Ok(values)
}
fn visit_unit<E>(self) -> Result<Self::Value, E>
where E: de::Error
{
Ok(MyMap::new())
}
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
}
}