Skip to main content

zerolaunch_plugin_api/services/parameter/
resolver.rs

1//! 参数解析器 trait 定义
2
3use super::types::{ParameterError, ParameterSnapshot};
4
5/// 参数解析器 trait
6///
7/// 通过 PluginHandle 暴露给插件和 Executor 使用。
8/// 设计说明:
9/// - resolve 方法为异步接口,保持与其他 SDK trait 风格统一
10/// - count_user_parameters 和 has_system_parameters 为同步方法,因为它们只是纯字符串解析
11#[async_trait::async_trait]
12pub trait ParameterResolver: Send + Sync {
13    /// 解析模板,填充参数
14    ///
15    /// 参数:
16    /// - template: 包含占位符的模板字符串(如 "notepad {clip}")
17    /// - user_args: 用户输入的参数列表
18    /// - snapshot: 系统参数快照(不透明句柄,由 capture_parameter_snapshot() 返回)
19    ///
20    /// 返回:填充后的完整字符串
21    async fn resolve(
22        &self,
23        template: &str,
24        user_args: &[String],
25        snapshot: &ParameterSnapshot,
26    ) -> Result<String, ParameterError>;
27
28    /// 统计模板中需要用户输入的参数数量(同步方法,纯计算)
29    fn count_user_parameters(&self, template: &str) -> usize;
30
31    /// 检查模板是否包含系统参数(同步方法,纯计算)
32    fn has_system_parameters(&self, template: &str) -> bool;
33}