mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 15:25:38 +00:00
feat(example): Add an example
This commit is contained in:
parent
af6fbba9b8
commit
c687ee60ff
2
examples/serde-syntex-example/.gitignore
vendored
Normal file
2
examples/serde-syntex-example/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
target
|
||||||
|
Cargo.lock
|
18
examples/serde-syntex-example/Cargo.toml
Normal file
18
examples/serde-syntex-example/Cargo.toml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[package]
|
||||||
|
name = "serde-syntex-example"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
|
||||||
|
build = "build.rs"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["serde_codegen"]
|
||||||
|
nightly = ["serde_macros"]
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
serde_codegen = { version = "^0.6.4", optional = true }
|
||||||
|
syntex = "^0.22.0"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = "^0.6.1"
|
||||||
|
serde_json = "^0.6.0"
|
||||||
|
serde_macros = { version = "^0.6.1", optional = true }
|
20
examples/serde-syntex-example/README.md
Normal file
20
examples/serde-syntex-example/README.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
This example demonstrates how to use Serde with Syntex. On stable or nightly
|
||||||
|
with Syntex, it can be built with:
|
||||||
|
|
||||||
|
```
|
||||||
|
% multirust run stable cargo run
|
||||||
|
Running `target/debug/serde-syntex-example`
|
||||||
|
{"x":1,"y":2}
|
||||||
|
Point { x: 1, y: 2 }
|
||||||
|
|
||||||
|
% multirust run nightly cargo run
|
||||||
|
Running `target/debug/serde-syntex-example`
|
||||||
|
{"x":1,"y":2}
|
||||||
|
Point { x: 1, y: 2 }
|
||||||
|
```
|
||||||
|
|
||||||
|
On nightly, it can use a plugin with:
|
||||||
|
|
||||||
|
```
|
||||||
|
% multirust run nightly cargo run --features nightly --no-default-features
|
||||||
|
```
|
29
examples/serde-syntex-example/build.rs
Normal file
29
examples/serde-syntex-example/build.rs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#[cfg(not(feature = "serde_macros"))]
|
||||||
|
mod inner {
|
||||||
|
extern crate syntex;
|
||||||
|
extern crate serde_codegen;
|
||||||
|
|
||||||
|
use std::env;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
let out_dir = env::var_os("OUT_DIR").unwrap();
|
||||||
|
|
||||||
|
let src = Path::new("src/main.rs.in");
|
||||||
|
let dst = Path::new(&out_dir).join("main.rs");
|
||||||
|
|
||||||
|
let mut registry = syntex::Registry::new();
|
||||||
|
|
||||||
|
serde_codegen::register(&mut registry);
|
||||||
|
registry.expand("", &src, &dst).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "serde_macros")]
|
||||||
|
mod inner {
|
||||||
|
pub fn main() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
inner::main();
|
||||||
|
}
|
11
examples/serde-syntex-example/src/main.rs
Normal file
11
examples/serde-syntex-example/src/main.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#![cfg_attr(nightly, feature(custom_derive, plugin))]
|
||||||
|
#![cfg_attr(nightly, plugin(serde_macros))]
|
||||||
|
|
||||||
|
extern crate serde;
|
||||||
|
extern crate serde_json;
|
||||||
|
|
||||||
|
#[cfg(feature = "serde_macros")]
|
||||||
|
include!("main.rs.in");
|
||||||
|
|
||||||
|
#[cfg(not(feature = "serde_macros"))]
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/main.rs"));
|
16
examples/serde-syntex-example/src/main.rs.in
Normal file
16
examples/serde-syntex-example/src/main.rs.in
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
|
struct Point {
|
||||||
|
x: i32,
|
||||||
|
y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let point = Point { x: 1, y: 2 };
|
||||||
|
let serialized = serde_json::to_string(&point).unwrap();
|
||||||
|
|
||||||
|
println!("{}", serialized);
|
||||||
|
|
||||||
|
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
|
||||||
|
|
||||||
|
println!("{:?}", deserialized);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user