3 unstable releases
| 0.2.0 | Jul 27, 2021 |
|---|---|
| 0.1.1 | Jul 27, 2021 |
| 0.1.0 | Jul 27, 2021 |
#33 in #nu
17KB
393 lines
serde-nu
Convert any value implementing serde::Serialize into a
nu_protocol::Value using serde_nu::to_value. Compare the below manual
implemeentation and the one using serde_nu.
use nu_protocol::{Dictionary, Primitive, UntaggedValue, Value};
use nu_source::Tag;
use serde::Serialize;
#[derive(Serialize)]
struct MyStruct {
index: usize,
name: String,
}
fn manual(s: MyStruct, tag: Tag) -> Value {
let mut dict = Dictionary::default();
dict.insert(
"index".into(),
Value {
value: UntaggedValue::Primitive(Primitive::Int(s.index as i64)),
tag: tag.clone(),
},
);
dict.insert(
"name".into(),
Value {
value: UntaggedValue::Primitive(Primitive::String(s.name)),
tag: tag.clone(),
},
);
Value {
value: UntaggedValue::Row(dict),
tag,
}
}
fn auto(s: &MyStruct, tag: Tag) -> Value {
serde_nu::to_value(s, tag).unwrap()
}
lib.rs:
Convert any value implementing serde::Serialize into a
nu_protocol::Value using serde_nu::to_value. Compare the below manual
implemeentation and the one using serde_nu.
use nu_protocol::{Dictionary, Primitive, UntaggedValue, Value};
use nu_source::Tag;
use serde::Serialize;
#[derive(Serialize)]
struct MyStruct {
index: usize,
name: String,
}
fn manual(s: MyStruct, tag: Tag) -> Value {
let mut dict = Dictionary::default();
dict.insert(
"index".into(),
Value {
value: UntaggedValue::Primitive(Primitive::Int(s.index as i64)),
tag: tag.clone(),
},
);
dict.insert(
"name".into(),
Value {
value: UntaggedValue::Primitive(Primitive::String(s.name)),
tag: tag.clone(),
},
);
Value {
value: UntaggedValue::Row(dict),
tag,
}
}
fn auto(s: &MyStruct, tag: Tag) -> Value {
serde_nu::to_value(s, tag).unwrap()
}
Dependencies
~7–15MB
~202K SLoC