[][src]Enum edn_rs::edn::Edn

pub enum 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(StringMap),
    Nil,
    Empty,
}

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

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(StringMap)
Nil
Empty

Implementations

impl Edn[src]

pub fn to_float(&self) -> Option<f64>[src]

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);

pub fn to_int(&self) -> Option<isize>[src]

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);

pub fn to_uint(&self) -> Option<usize>[src]

Similar to to_int but returns an Option<usize>

pub fn to_bool(&self) -> Option<bool>[src]

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);

pub fn to_char(&self) -> Option<char>[src]

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);

pub fn to_vec(&self) -> Option<Vec<String>>[src]

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.

pub fn to_int_vec(&self) -> Option<Vec<isize>>[src]

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

pub fn to_uint_vec(&self) -> Option<Vec<usize>>[src]

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

pub fn to_float_vec(&self) -> Option<Vec<f64>>[src]

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

pub fn to_bool_vec(&self) -> Option<Vec<bool>>[src]

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

pub fn to_debug(&self) -> String[src]

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);

pub fn get<I: Index>(&self, index: I) -> Option<&Edn>[src]

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()));
}

pub fn get_mut<I: Index>(&mut self, index: I) -> Option<&mut Edn>[src]

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()));
}

pub fn iter(&self) -> Option<Iter<'_, Edn>>[src]

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);
}

pub fn set_iter(&self) -> Option<Iter<'_, Edn>>[src]

set_iter returns am Option<btree_set::Iter<Edn>> with Some for type Edn::Set Other types return None

pub fn map_iter(&self) -> Option<Iter<'_, String, Edn>>[src]

map_iter returns am Option<btree_map::Iter<String, Edn>> with Some for type Edn::Map Other types return None

Trait Implementations

impl Clone for Edn[src]

impl Debug for Edn[src]

impl Display for Edn[src]

impl Eq for Edn[src]

impl FromStr for Edn[src]

type Err = Error

The associated error which can be returned from parsing.

fn from_str(s: &str) -> Result<Self, Self::Err>[src]

Parses a &str that contains an Edn into Result<Edn, EdnError>

impl Hash for Edn[src]

impl<I> Index<I> for Edn where
    I: Index, 
[src]

type Output = Edn

The returned type after indexing.

impl<I> IndexMut<I> for Edn where
    I: Index, 
[src]

impl Ord for Edn[src]

impl PartialEq<Edn> for Edn[src]

impl PartialOrd<Edn> for Edn[src]

impl StructuralEq for Edn[src]

impl StructuralPartialEq for Edn[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.