pub trait Configurable {
// Required methods
fn config_ns(&self) -> &str;
fn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>;
fn dump_config(&self) -> SectionMap;
}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)。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".