pub enum Edn {
}
Expand description
EdnType
is an Enum with possible values for an EDN type
Symbol and Char are not yet implemented
String implementation of Edn can be obtained with .to_string()
Variants
Tagged(String, Box<Edn>)
Vector(Vector)
Set(Set)
Map(Map)
List(List)
Key(String)
Symbol(String)
Str(String)
Int(isize)
UInt(usize)
Double(Double)
Rational(String)
Char(char)
Bool(bool)
Inst(String)
Uuid(String)
NamespacedMap(String, Map)
Nil
Empty
Implementations
sourceimpl Edn
impl Edn
sourcepub fn to_float(&self) -> Option<f64>
pub fn to_float(&self) -> Option<f64>
to_float
takes an Edn
and returns an Option<f64>
with its value. Most types return None
use edn_rs::edn::{Edn, Vector};
let key = Edn::Key(String::from(":1234"));
let q = Edn::Rational(String::from("3/4"));
let i = Edn::Int(12isize);
assert_eq!(Edn::Vector(Vector::empty()).to_float(), None);
assert_eq!(key.to_float().unwrap(),1234f64);
assert_eq!(q.to_float().unwrap(), 0.75f64);
assert_eq!(i.to_float().unwrap(), 12f64);
sourcepub fn to_int(&self) -> Option<isize>
pub fn to_int(&self) -> Option<isize>
to_int
takes an Edn
and returns an Option<isize>
with its value. Most types return None
use edn_rs::edn::{Edn, Vector};
let key = Edn::Key(String::from(":1234"));
let q = Edn::Rational(String::from("3/4"));
let f = Edn::Double(12.3f64.into());
assert_eq!(Edn::Vector(Vector::empty()).to_float(), None);
assert_eq!(key.to_int().unwrap(),1234isize);
assert_eq!(q.to_int().unwrap(), 1isize);
assert_eq!(f.to_int().unwrap(), 12isize);
sourcepub fn to_bool(&self) -> Option<bool>
pub fn to_bool(&self) -> Option<bool>
to_bool
takes an Edn
and returns an Option<bool>
with its value. Most types return None
use edn_rs::edn::{Edn};
let b = Edn::Bool(true);
let s = Edn::Str("true".to_string());
let symbol = Edn::Symbol("false".to_string());
assert_eq!(b.to_bool().unwrap(),true);
assert_eq!(s.to_bool().unwrap(),true);
assert_eq!(symbol.to_bool().unwrap(),false);
sourcepub fn to_char(&self) -> Option<char>
pub fn to_char(&self) -> Option<char>
to_char
takes an Edn
and returns an Option<char>
with its value. Most types return None
use edn_rs::edn::{Edn};
let c = Edn::Char('c');
let symbol = Edn::Symbol("false".to_string());
assert_eq!(c.to_char().unwrap(),'c');
assert_eq!(symbol.to_char(), None);
sourcepub fn to_vec(&self) -> Option<Vec<String>>
pub fn to_vec(&self) -> Option<Vec<String>>
to_vec
converts Edn
types Vector
, List
and Set
into an Option<Vec<String>>
.
Type String was selected because it is the current way to mix floats, integers and Strings.
sourcepub fn to_int_vec(&self) -> Option<Vec<isize>>
pub fn to_int_vec(&self) -> Option<Vec<isize>>
to_int_vec
converts Edn
types Vector
List
and Set
into an Option<Vec<isize>>
.
All elements of this Edn structure should be of the same type
sourcepub fn to_uint_vec(&self) -> Option<Vec<usize>>
pub fn to_uint_vec(&self) -> Option<Vec<usize>>
to_uint_vec
converts Edn
types Vector
List
and Set
into an Option<Vec<usize>>
.
All elements of this Edn structure should be of the same type
sourcepub fn to_float_vec(&self) -> Option<Vec<f64>>
pub fn to_float_vec(&self) -> Option<Vec<f64>>
to_float_vec
converts Edn
types Vector
List
and Set
into an Option<Vec<f64>>
.
All elements of this Edn structure should be of the same type
sourcepub fn to_bool_vec(&self) -> Option<Vec<bool>>
pub fn to_bool_vec(&self) -> Option<Vec<bool>>
to_bool_vec
converts Edn
types Vector
List
and Set
into an Option<Vec<bool>>
.
All elements of this Edn structure should be of the same type
sourcepub fn to_debug(&self) -> String
pub fn to_debug(&self) -> String
std::fmt::Debug
to_debug
is a wrapper of format!("{:?}", &self)
for &Edn
.
use edn_rs::edn::{Edn, Vector};
let edn = Edn::Vector(Vector::new(vec![Edn::Int(5), Edn::Int(6), Edn::Int(7)]));
let expected = "Vector(Vector([Int(5), Int(6), Int(7)]))";
assert_eq!(edn.to_debug(), expected);
While to_string
returns a valid edn:
use edn_rs::edn::{Edn, Vector};
let edn = Edn::Vector(Vector::new(vec![Edn::Int(5), Edn::Int(6), Edn::Int(7)]));
let expected = "[5, 6, 7, ]";
assert_eq!(edn.to_string(), expected);
sourcepub fn get<I: Index>(&self, index: I) -> Option<&Edn>
pub fn get<I: Index>(&self, index: I) -> Option<&Edn>
Index into a EDN vector, list, set or map. A string index can be used to access a value in a map, and a usize index can be used to access an element of a seqs.
Returns None
if the type of self
does not match the type of the
index, for example if the index is a string and self
is a seq or a
number. Also returns None
if the given key does not exist in the map
or the given index is not within the bounds of the seq.
#[macro_use]
extern crate edn_rs;
use edn_rs::edn::{Edn, Map, Vector};
fn main() {
let edn = edn!([ 1 1.2 3 {false :f nil 3/4}]);
assert_eq!(edn[1], edn!(1.2));
assert_eq!(edn.get(1).unwrap(), &edn!(1.2));
assert_eq!(edn[3]["false"], edn!(:f));
assert_eq!(edn[3].get("false").unwrap(), &Edn::Key(":f".to_string()));
}
sourcepub fn get_mut<I: Index>(&mut self, index: I) -> Option<&mut Edn>
pub fn get_mut<I: Index>(&mut self, index: I) -> Option<&mut Edn>
Mutably index into a EDN vector, set, list or map. A string index can be used to access a value in a map, and a usize index can be used to access an element of a seq.
Returns None
if the type of self
does not match the type of the
index, for example if the index is a string and self
is a seq or a
number. Also returns None
if the given key does not exist in the map
or the given index is not within the bounds of the seq.
#[macro_use]
extern crate edn_rs;
use edn_rs::edn::{Edn, Map, Vector};
fn main() {
let mut edn = edn!([ 1 1.2 3 {false :f nil 3/4}]);
assert_eq!(edn[1], edn!(1.2));
assert_eq!(edn.get_mut(1).unwrap(), &edn!(1.2));
assert_eq!(edn[3]["false"], edn!(:f));
assert_eq!(edn[3].get_mut("false").unwrap(), &Edn::Key(":f".to_string()));
}
sourcepub fn iter(&self) -> Option<Iter<'_, Edn>>
pub fn iter(&self) -> Option<Iter<'_, Edn>>
iter
returns am Option<Iter<Edn>>
with Some
for types Edn::Vector
and Edn::List
Other types return None
use edn_rs::{Edn, Vector};
fn main() {
let v = Edn::Vector(Vector::new(vec![Edn::Int(5), Edn::Int(6), Edn::Int(7)]));
let sum = v.iter().unwrap().filter(|e| e.to_int().is_some()).map(|e| e.to_int().unwrap()).sum();
assert_eq!(18isize, sum);
}
sourcepub fn set_iter(&self) -> Option<Iter<'_, Edn>>
pub fn set_iter(&self) -> Option<Iter<'_, Edn>>
set_iter
returns am Option<btree_set::Iter<Edn>>
with Some
for type Edn::Set
Other types return None
sourcepub fn map_iter(&self) -> Option<Iter<'_, String, Edn>>
pub fn map_iter(&self) -> Option<Iter<'_, String, Edn>>
map_iter
returns am Option<btree_map::Iter<String, Edn>>
with Some
for type Edn::Map
Other types return None
sourcepub fn to_str_uuid(&self) -> Option<String>
pub fn to_str_uuid(&self) -> Option<String>
to_str_uuid
returns am Option<String>
with Some
containing the string representing the UUID for type Edn::Uuid
Other types return None
sourcepub fn to_str_inst(&self) -> Option<String>
pub fn to_str_inst(&self) -> Option<String>
to_str_INST
returns am Option<String>
with Some
containing the string representing the instant for type Edn::Inst
Other types return None
Trait Implementations
sourceimpl Ord for Edn
impl Ord for Edn
sourceimpl PartialOrd<Edn> for Edn
impl PartialOrd<Edn> for Edn
sourcefn partial_cmp(&self, other: &Edn) -> Option<Ordering>
fn partial_cmp(&self, other: &Edn) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl Eq for Edn
impl StructuralEq for Edn
impl StructuralPartialEq for Edn
Auto Trait Implementations
impl RefUnwindSafe for Edn
impl Send for Edn
impl Sync for Edn
impl Unpin for Edn
impl UnwindSafe for Edn
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more