From 979e881762a728661e72efd99bc2b35b3db8c71b Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sun, 24 May 2026 18:20:34 +0800 Subject: Require explicit import of `crate::Next` in chained functions --- CHANGELOG.md | 14 ++++++++++++++ mingling_macros/src/chain.rs | 8 +++++++- mling/src/cli/install.rs | 2 +- mling/src/cli/list.rs | 2 +- mling/src/cli/namespace_mgr.rs | 5 ++++- mling/src/cli/read.rs | 5 ++++- 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6bda6b..36806ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -108,6 +108,20 @@ fn render(prev: Previous) { // Implicitly introduces `__renderer_inner_result` 5. **\[macros\]** Moved the `entry!`, `route!`, `#[program_setup]` macros into the `extra_macros` feature +6. **\[macros\]** The `crate::Next` generated by `gen_program!()` now requires explicit import into the project + +```rust +use crate::Next; + +#[chain] +fn handle_cmd(args: EntryCmd) -> Next { + // ^^^^\_ requires explicit import + // ... +} + +gen_program!(); +``` + --- ### Release 0.1.8 (2026-05-18) diff --git a/mingling_macros/src/chain.rs b/mingling_macros/src/chain.rs index 9666c51..559468c 100644 --- a/mingling_macros/src/chain.rs +++ b/mingling_macros/src/chain.rs @@ -183,7 +183,13 @@ fn generate_original_fn( } } } else { - quote! { #fn_body } + quote! { + { + let _: crate::Next; + let _: Next; + #fn_body + } + } }; #[cfg(feature = "async")] diff --git a/mling/src/cli/install.rs b/mling/src/cli/install.rs index dd6dec4..cca7483 100644 --- a/mling/src/cli/install.rs +++ b/mling/src/cli/install.rs @@ -4,7 +4,7 @@ use mingling::{ parser::Picker, }; -use crate::project_installer::install_all; +use crate::{Next, project_installer::install_all}; dispatcher!("install", InstallCommand => InstallEntry); diff --git a/mling/src/cli/list.rs b/mling/src/cli/list.rs index c3e4c05..ac9a65f 100644 --- a/mling/src/cli/list.rs +++ b/mling/src/cli/list.rs @@ -6,7 +6,7 @@ use mingling::{ }; use serde::Serialize; -use crate::namespace_manager::list_namespaces; +use crate::{Next, namespace_manager::list_namespaces}; dispatcher!("ls-namespace", ListInstalledCommand => ListInstalledEntry); diff --git a/mling/src/cli/namespace_mgr.rs b/mling/src/cli/namespace_mgr.rs index 0f11332..4ea2229 100644 --- a/mling/src/cli/namespace_mgr.rs +++ b/mling/src/cli/namespace_mgr.rs @@ -4,7 +4,10 @@ use mingling::{ parser::{Picker, Yes}, }; -use crate::namespace_manager::{list_namespaces, remove_namespace, set_namespace_trusted}; +use crate::{ + Next, + namespace_manager::{list_namespaces, remove_namespace, set_namespace_trusted}, +}; dispatcher!("trust", TrustNamespaceCommand => TrustNamespaceEntry); dispatcher!("untrust", UntrustNamespaceCommand => UntrustNamespaceEntry); diff --git a/mling/src/cli/read.rs b/mling/src/cli/read.rs index 6352c94..82f8fd5 100644 --- a/mling/src/cli/read.rs +++ b/mling/src/cli/read.rs @@ -7,7 +7,10 @@ use mingling::{ }; use serde::Serialize; -use crate::project_solver::{BinaryItem, solve_current_dir}; +use crate::{ + Next, + project_solver::{BinaryItem, solve_current_dir}, +}; dispatcher!("show-target-dir", ReadTargetDirCommand => ReadTargetDirEntry); dispatcher!("show-workspace-root", ReadWorkspaceRootCommand => ReadWorkspaceRootEntry); -- cgit