From 3d2e3beafefa58da4d6cf2f68fe06319dad08626 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 9 Jun 2016 00:54:32 -0700 Subject: [PATCH 1/3] Add serde_codegen::expand to avoid public Syntex dependency --- README.md | 10 ++-------- examples/serde-syntex-example/build.rs | 5 +---- serde_codegen/src/lib.rs | 12 ++++++++++++ 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 03093081..ec8564c9 100644 --- a/README.md +++ b/README.md @@ -142,10 +142,7 @@ pub fn main() { 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(); + serde_codegen::expand(&src, &dst).unwrap(); } ``` @@ -203,10 +200,7 @@ mod inner { 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(); + serde_codegen::expand(&src, &dst).unwrap(); } } diff --git a/examples/serde-syntex-example/build.rs b/examples/serde-syntex-example/build.rs index b1aadd78..b034d05f 100644 --- a/examples/serde-syntex-example/build.rs +++ b/examples/serde-syntex-example/build.rs @@ -12,10 +12,7 @@ mod inner { 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(); + serde_codegen::expand(&src, &dst).unwrap(); } } diff --git a/serde_codegen/src/lib.rs b/serde_codegen/src/lib.rs index 52ca7912..3a8e94b1 100644 --- a/serde_codegen/src/lib.rs +++ b/serde_codegen/src/lib.rs @@ -22,6 +22,11 @@ extern crate syntax; #[cfg(not(feature = "with-syntex"))] extern crate rustc_plugin; +#[cfg(feature = "with-syntex")] +use std::io; +#[cfg(feature = "with-syntex")] +use std::path::Path; + #[cfg(not(feature = "with-syntex"))] use syntax::feature_gate::AttributeType; @@ -31,6 +36,13 @@ include!(concat!(env!("OUT_DIR"), "/lib.rs")); #[cfg(not(feature = "with-syntex"))] include!("lib.rs.in"); +#[cfg(feature = "with-syntex")] +pub fn expand(src: &Path, dst: &Path) -> io::Result<()> { + let mut registry = syntex::Registry::new(); + register(&mut registry); + registry.expand("", src, dst) +} + #[cfg(feature = "with-syntex")] pub fn register(reg: &mut syntex::Registry) { use syntax::{ast, fold}; From c716c4e2615e55d9d7ed54a197ed5c9cbc957442 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 9 Jun 2016 09:31:19 -0700 Subject: [PATCH 2/3] Use AsRef to accept paths in serde_codegen::expand --- serde_codegen/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/serde_codegen/src/lib.rs b/serde_codegen/src/lib.rs index 3a8e94b1..a5c51a40 100644 --- a/serde_codegen/src/lib.rs +++ b/serde_codegen/src/lib.rs @@ -37,10 +37,13 @@ include!(concat!(env!("OUT_DIR"), "/lib.rs")); include!("lib.rs.in"); #[cfg(feature = "with-syntex")] -pub fn expand(src: &Path, dst: &Path) -> io::Result<()> { +pub fn expand(src: S, dst: D) -> io::Result<()> + where S: AsRef, + D: AsRef, +{ let mut registry = syntex::Registry::new(); register(&mut registry); - registry.expand("", src, dst) + registry.expand("", src.as_ref(), dst.as_ref()) } #[cfg(feature = "with-syntex")] From a64fe99d1bc690143678c05b9c574ce7552b3012 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 9 Jun 2016 11:10:35 -0700 Subject: [PATCH 3/3] Add cargo override for building examples --- examples/.cargo/config | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 examples/.cargo/config diff --git a/examples/.cargo/config b/examples/.cargo/config new file mode 100644 index 00000000..19551331 --- /dev/null +++ b/examples/.cargo/config @@ -0,0 +1,5 @@ +paths = [ + "../serde", + "../serde_codegen", + "../serde_macros", +]