aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/build/pathf.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-14 02:57:39 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-14 02:57:39 +0800
commita14b9bbb96e025a60abeb492ba043b0db806289a (patch)
treef764b1d9dae63e4dabcdc9dcf4fb135b9788255d /mingling_core/src/build/pathf.rs
parent9dde70fc4fb85a5be14a9429ba52fffe529317d3 (diff)
docs: enable running doctests in comp and pathf build modules
Diffstat (limited to 'mingling_core/src/build/pathf.rs')
-rw-r--r--mingling_core/src/build/pathf.rs67
1 files changed, 63 insertions, 4 deletions
diff --git a/mingling_core/src/build/pathf.rs b/mingling_core/src/build/pathf.rs
index 97cf672..23d3910 100644
--- a/mingling_core/src/build/pathf.rs
+++ b/mingling_core/src/build/pathf.rs
@@ -1,4 +1,3 @@
-// Doc Not Optimize
#![allow(unused_imports)]
pub use mingling_pathf::config::*;
@@ -8,8 +7,32 @@ 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`).
+/// Analyzes and builds a type mapping for a specific crate.
+///
+/// Accepts `crate_dir` and `output_dir`, and invokes `pathf` to build the type mapping.
+///
+/// # Arguments
+///
+/// - `crate_dir`: Root directory of the crate's source code to analyze (usually `CARGO_MANIFEST_DIR`).
+/// - `output_dir`: Output directory for generated artifacts (type mapping data).
+///
+/// # Returns
+///
+/// - On success: returns `Ok(())`;
+/// - On failure: returns the corresponding `MinglingPathfinderError`.
+///
+/// # Example
+///
+/// ```
+/// # #[cfg(all(feature = "build", feature = "pathf"))] {
+/// use mingling_core::build::analyze_and_build_type_mapping_for;
+/// use std::path::Path;
+///
+/// let crate_dir = Path::new(".");
+/// let output_dir = Path::new(".temp/target/out");
+/// analyze_and_build_type_mapping_for(crate_dir, output_dir).expect("analysis failed");
+/// # }
+/// ```
pub fn analyze_and_build_type_mapping_for(
crate_dir: &Path,
output_dir: &Path,
@@ -20,7 +43,43 @@ pub fn analyze_and_build_type_mapping_for(
mingling_pathf::analyze_and_build_type_mapping_for(crate_dir, output_dir, &config)
}
-/// Wraps `analyze_and_build_type_mapping` (build.rs convenience) with config.
+/// # Analyzes and builds a type mapping
+///
+/// This function reads the current crate directory (`CARGO_PKG_NAME`) and output directory (`OUT_DIR`)
+/// from environment variables, automatically combines them into the target output path, and invokes
+/// the underlying analysis logic. Suitable for use in `build.rs`.
+///
+/// It also sends the `cargo:rerun-if-changed=src/` directive to Cargo so that a rebuild is
+/// automatically triggered when source code changes.
+///
+/// # Prerequisites
+///
+/// This function depends on the following environment variables, which are typically set
+/// automatically during a Cargo build:
+///
+/// - `CARGO_PKG_NAME`: Name of the current crate.
+/// - `OUT_DIR`: Build output directory provided by Cargo.
+///
+/// If these variables are missing, a corresponding [`MinglingPathfinderError`](crate::error::MinglingPathfinderError)
+/// is returned.
+///
+/// # Returns
+///
+/// Returns `Ok(())` on success; returns a corresponding
+/// [`MinglingPathfinderError`](crate::error::MinglingPathfinderError) on failure.
+///
+/// # Example
+///
+/// ```
+/// # #[cfg(all(feature = "build", feature = "pathf"))] {
+/// use mingling_core::build::analyze_and_build_type_mapping;
+///
+/// fn main() {
+/// analyze_and_build_type_mapping().expect("failed to build type mapping");
+/// }
+/// # }
+/// ```
+
pub fn analyze_and_build_type_mapping() -> Result<(), crate::error::MinglingPathfinderError> {
let config = mingling_pathf::config::PathfinderConfig {
use_dispatch_tree: cfg!(feature = "dispatch_tree"),