pub enum Ipld {
Null,
Bool(bool),
Integer(i128),
Float(f64),
String(String),
Bytes(Vec<u8>),
List(Vec<Ipld>),
Map(BTreeMap<String, Ipld>),
Link(Cid),
}Expand description
Ipld
Variants§
Null
Represents the absence of a value or the value undefined.
Bool(bool)
Represents a boolean value.
Integer(i128)
Represents an integer.
Float(f64)
Represents a floating point value.
String(String)
Represents an UTF-8 string.
Bytes(Vec<u8>)
Represents a sequence of bytes.
List(Vec<Ipld>)
Represents a list.
Map(BTreeMap<String, Ipld>)
Represents a map of strings.
Link(Cid)
Represents a map of integers.
Implementations§
Source§impl Ipld
impl Ipld
Sourcepub fn kind(&self) -> IpldKind
pub fn kind(&self) -> IpldKind
Convert from an Ipld object into its kind without any associated
values.
This is intentionally not implemented via From<Ipld> to prevent
accidental conversions by making it more explicit.
Sourcepub fn take<'a, T: Into<IpldIndex<'a>>>(
self,
index: T,
) -> Result<Option<Self>, IndexError>
pub fn take<'a, T: Into<IpldIndex<'a>>>( self, index: T, ) -> Result<Option<Self>, IndexError>
Destructs an ipld list or map
Sourcepub fn get<'a, T: Into<IpldIndex<'a>>>(
&self,
index: T,
) -> Result<Option<&Self>, IndexError>
pub fn get<'a, T: Into<IpldIndex<'a>>>( &self, index: T, ) -> Result<Option<&Self>, IndexError>
Indexes into an ipld list or map.
Sourcepub fn references<E: Extend<Cid>>(&self, set: &mut E)
pub fn references<E: Extend<Cid>>(&self, set: &mut E)
Returns the references to other blocks.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Ipld
impl<'de> Deserialize<'de> for Ipld
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> Deserializer<'de> for Ipld
impl<'de> Deserializer<'de> for Ipld
Deserialize from an Ipld enum into a Rust type.
The deserialization will return an error if you try to deserialize into an
integer type that would be too small to hold the value stored in
Ipld::Integer.
[Ipld::Floats] can be converted to f32 if there is no of precision, else
it will error.
Source§type Error = SerdeError
type Error = SerdeError
Source§fn deserialize_i8<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_i8<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an i8 value.Source§fn deserialize_i16<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_i16<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an i16 value.Source§fn deserialize_i32<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_i32<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an i32 value.Source§fn deserialize_i64<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_i64<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an i64 value.Source§fn deserialize_u8<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_u8<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a u8 value.Source§fn deserialize_u16<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_u16<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a u16 value.Source§fn deserialize_u32<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_u32<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a u32 value.Source§fn deserialize_u64<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_u64<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a u64 value.Source§fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>where
V: Visitor<'de>,
Deserializer to figure out how to drive the visitor based
on what data type is in the input. Read moreSource§fn deserialize_unit<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_unit<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a unit value.Source§fn deserialize_bool<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_bool<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a bool value.Source§fn deserialize_f32<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_f32<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a f32 value.Source§fn deserialize_f64<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_f64<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a f64 value.Source§fn deserialize_char<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_char<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a char value.Source§fn deserialize_str<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_str<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a string value and does
not benefit from taking ownership of buffered data owned by the
Deserializer. Read moreSource§fn deserialize_string<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_string<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a string value and would
benefit from taking ownership of buffered data owned by the
Deserializer. Read moreSource§fn deserialize_bytes<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_bytes<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a byte array and does not
benefit from taking ownership of buffered data owned by the
Deserializer. Read moreSource§fn deserialize_byte_buf<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_byte_buf<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a byte array and would
benefit from taking ownership of buffered data owned by the
Deserializer. Read moreSource§fn deserialize_seq<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_seq<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a sequence of values.Source§fn deserialize_tuple<V: Visitor<'de>>(
self,
len: usize,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_tuple<V: Visitor<'de>>( self, len: usize, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a sequence of values and
knows how many values there are without looking at the serialized data.Source§fn deserialize_tuple_struct<V: Visitor<'de>>(
self,
_name: &str,
len: usize,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_tuple_struct<V: Visitor<'de>>( self, _name: &str, len: usize, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a tuple struct with a
particular name and number of fields.Source§fn deserialize_map<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_map<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a map of key-value pairs.Source§fn deserialize_identifier<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_identifier<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting the name of a struct
field or the discriminant of an enum variant.Source§fn deserialize_struct<V: Visitor<'de>>(
self,
_name: &str,
_fields: &[&str],
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_struct<V: Visitor<'de>>( self, _name: &str, _fields: &[&str], visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a struct with a particular
name and fields.Source§fn deserialize_unit_struct<V: Visitor<'de>>(
self,
_name: &str,
_visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_unit_struct<V: Visitor<'de>>( self, _name: &str, _visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a unit struct with a
particular name.Source§fn deserialize_newtype_struct<V: Visitor<'de>>(
self,
name: &str,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_newtype_struct<V: Visitor<'de>>( self, name: &str, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting a newtype struct with a
particular name.Source§fn deserialize_enum<V: Visitor<'de>>(
self,
_name: &str,
_variants: &[&str],
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_enum<V: Visitor<'de>>( self, _name: &str, _variants: &[&str], visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an enum value with a
particular name and possible variants.Source§fn deserialize_ignored_any<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_ignored_any<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type needs to deserialize a value whose type
doesn’t matter because it is ignored. Read moreSource§fn deserialize_option<V: Visitor<'de>>(
self,
visitor: V,
) -> Result<V::Value, Self::Error>
fn deserialize_option<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>
Deserialize type is expecting an optional value. Read moreSource§fn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Deserialize implementations should expect to
deserialize their human-readable form. Read moreSource§impl PartialEq for Ipld
impl PartialEq for Ipld
NaN floats are forbidden in the IPLD Data Model, but we do not enforce it.
So in case such a value is introduced accidentally, make sure that it still
compares as equal. This allows us to implement Eq for Ipld.