in serde-generate/src/rust.rs [415:449]
fn install_module(
&self,
config: &CodeGeneratorConfig,
registry: &Registry,
) -> std::result::Result<(), Self::Error> {
let generator = CodeGenerator::new(config);
let (name, version) = {
let parts = config.module_name.splitn(2, ':').collect::<Vec<_>>();
if parts.len() >= 2 {
(parts[0].to_string(), parts[1].to_string())
} else {
(parts[0].to_string(), "0.1.0".to_string())
}
};
let dir_path = self.install_dir.join(&name);
std::fs::create_dir_all(&dir_path)?;
let mut cargo = std::fs::File::create(&dir_path.join("Cargo.toml"))?;
write!(
cargo,
r#"[package]
name = "{}"
version = "{}"
edition = "2018"
[dependencies]
serde = {{ version = "1.0", features = ["derive"] }}
serde_bytes = "0.11"
"#,
name, version,
)?;
std::fs::create_dir(dir_path.join("src"))?;
let source_path = dir_path.join("src/lib.rs");
let mut source = std::fs::File::create(&source_path)?;
generator.output(&mut source, registry)
}