diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-29 14:55:20 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-29 14:55:46 +0800 |
| commit | dc05173f3eafe0e782bc8824581c3819c8688782 (patch) | |
| tree | 0ef26b909db1c94e846f3d8364eaa86d42475ef9 /mingling_core/src/lib.rs | |
| parent | 323d64413249044de7dcb129d2160b5e22471982 (diff) | |
fix(macros): pass pathf_map into dispatch tree generators
Diffstat (limited to 'mingling_core/src/lib.rs')
| -rw-r--r-- | mingling_core/src/lib.rs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/mingling_core/src/lib.rs b/mingling_core/src/lib.rs index 14559ed..ac6449f 100644 --- a/mingling_core/src/lib.rs +++ b/mingling_core/src/lib.rs @@ -102,8 +102,6 @@ pub mod pathf { pub use mingling_pathf::pattern_analyzer::*; pub use mingling_pathf::patterns::*; - pub use mingling_pathf::analyze_and_build_type_mapping; - use std::path::Path; /// Wraps `analyze_and_build_type_mapping_for` with config derived from @@ -117,4 +115,29 @@ pub mod pathf { }; mingling_pathf::analyze_and_build_type_mapping_for(crate_dir, output_dir, &config) } + + /// Wraps `analyze_and_build_type_mapping` (build.rs convenience) with config. + pub fn analyze_and_build_type_mapping() -> Result<(), crate::error::MinglingPathfinderError> { + let config = mingling_pathf::config::PathfinderConfig { + use_dispatch_tree: cfg!(feature = "dispatch_tree"), + }; + let crate_dir = + std::env::current_dir().map_err(crate::error::MinglingPathfinderError::IoError)?; + let crate_name = std::env::var("CARGO_PKG_NAME").map_err(|_| { + crate::error::MinglingPathfinderError::IoError(std::io::Error::new( + std::io::ErrorKind::NotFound, + "CARGO_PKG_NAME not set", + )) + })?; + let out_dir = std::env::var("OUT_DIR").map_err(|_| { + crate::error::MinglingPathfinderError::IoError(std::io::Error::new( + std::io::ErrorKind::NotFound, + "OUT_DIR not set", + )) + })?; + let output_dir = Path::new(&out_dir).join(&crate_name); + mingling_pathf::analyze_and_build_type_mapping_for(&crate_dir, &output_dir, &config)?; + println!("cargo:rerun-if-changed=src/"); + Ok(()) + } } |
