1 use anyhow::Result; 2 use semver::Version; 3 use serde::Deserialize; 4 use std::fs; 5 use std::path::Path; 6 get() -> Result<Version>7pub fn get() -> Result<Version> { 8 let codegen_root = Path::new(env!("CARGO_MANIFEST_DIR")); 9 let syn_cargo_toml = codegen_root.join("../Cargo.toml"); 10 let manifest = fs::read_to_string(syn_cargo_toml)?; 11 let parsed: Manifest = toml::from_str(&manifest)?; 12 Ok(parsed.package.version) 13 } 14 15 #[derive(Debug, Deserialize)] 16 struct Manifest { 17 package: Package, 18 } 19 20 #[derive(Debug, Deserialize)] 21 struct Package { 22 version: Version, 23 } 24