diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-23 00:38:36 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-23 00:38:36 +0800 |
| commit | 39721a88611f47a8e02a4daeafaa34d1a2c44b34 (patch) | |
| tree | d4f5191556413e81300390a8dc0d54e0a0736e75 /mingling_core/src/build/pathf.rs | |
| parent | e6c2545f89d2af8bac4e772d44655b97789ae60f (diff) | |
feat(core): rename `builds` feature to `build`
Replace the `builds` feature with `build` across the crate, keeping
a backward-compatible alias for the old name. Update all internal
visibility from `#[doc(hidden)] pub mod` to `pub(crate) mod` and
reorganize the `__private` module into a dedicated `private.rs`.
Diffstat (limited to 'mingling_core/src/build/pathf.rs')
| -rw-r--r-- | mingling_core/src/build/pathf.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/mingling_core/src/build/pathf.rs b/mingling_core/src/build/pathf.rs new file mode 100644 index 0000000..d8d4698 --- /dev/null +++ b/mingling_core/src/build/pathf.rs @@ -0,0 +1,43 @@ +pub use mingling_pathf::config::*; +pub use mingling_pathf::module_pathf::*; +pub use mingling_pathf::pattern_analyzer::*; +pub use mingling_pathf::patterns::*; + +use std::path::Path; + +/// Wraps `analyze_and_build_type_mapping_for` with config derived from +/// the crate's feature flags (e.g., `dispatch_tree`). +pub fn analyze_and_build_type_mapping_for( + crate_dir: &Path, + output_dir: &Path, +) -> Result<(), crate::error::MinglingPathfinderError> { + let config = mingling_pathf::config::PathfinderConfig { + use_dispatch_tree: cfg!(feature = "dispatch_tree"), + }; + 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(()) +} |
