Rust AppView - highly experimental!
at main 31 lines 728 B view raw
1use cid::Cid; 2use serde::{Deserialize, Deserializer, Serialize, Serializer}; 3 4pub fn cid_from_string<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Cid, D::Error> { 5 let str = String::deserialize(deserializer)?; 6 7 Cid::try_from(str).map_err(serde::de::Error::custom) 8} 9 10pub fn cid_as_str<S>(inp: &Cid, serializer: S) -> Result<S::Ok, S::Error> 11where 12 S: Serializer, 13{ 14 inp.to_string().serialize(serializer) 15} 16 17#[derive(Debug, Deserialize, Serialize)] 18pub struct LinkRef { 19 #[serde(rename = "$link")] 20 link: String, 21} 22 23pub fn cid_as_link<S>(inp: &Cid, serializer: S) -> Result<S::Ok, S::Error> 24where 25 S: Serializer, 26{ 27 LinkRef { 28 link: inp.to_string(), 29 } 30 .serialize(serializer) 31}