pub trait Configurable {
// Required methods
fn config_ns(&self) -> &str;
fn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>;
fn dump_config(&self) -> SectionMap;
// Provided methods
fn config_schema(&self) -> Vec<ConfigField> { ... }
fn config_view(&self) -> ConfigView { ... }
}Expand description
配置托底契约(可选能力:有配置的插件实现它,没配置的插件零负担)。
实现面(目标:
Configurable::config_ns全链唯一(命名实例 =<工厂>.<注册名>, 存构造期字符串回&str;字符纪律及校验见valid_config_ns);Configurable::apply_config只回灌引用:秘面字段在本方法内禁止 调 secret 取值(宿主管理线程,ek-cfg 秘取可秒级阻塞,BD-CFG-16); 真实取值由插件在自己的时机(典型 = on_start 后自发连接前)做;Configurable::dump_config只输出要持久的字段——不输出 = 不持久 (BD-CFG-15);秘面字段只出引用形态。
内部状态修改用自锁(与 Plugin 纪律同式:Mutex/RwLock)——本 trait 是
&self,可重入(boot 载入与运行期回灌同一条路径)。
Required Methods§
Sourcefn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>
fn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>
托底载入(宿主 boot / svctl.start 时直调;失败 = 上抛给单一硬报错点)。
Sourcefn dump_config(&self) -> SectionMap
fn dump_config(&self) -> SectionMap
托底导出(插件受理成功后由插件自己 dump → ask cfg.save;见 Ek-14)。
Provided Methods§
Sourcefn config_schema(&self) -> Vec<ConfigField>
fn config_schema(&self) -> Vec<ConfigField>
参数自描述(「插件即 App」波加项,缺省空 = 老插件零负担)。
声明了才进通用参数窗(ek-ui 呈现层按此渲染字段与界,不硬编码字段表);
校验单源 = crate::cfg_face::ConfigField::validate,
界面/CLI/导入档案包三条路共用。
Sourcefn config_view(&self) -> ConfigView
fn config_view(&self) -> ConfigView
当前值视图(缺省走 crate::cfg_face::view_of = dump 形态)。
秘面只出引用串,值永不进本面(呈现侧纪律,同 BD-CFG-12/15)。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".