Skip to main content

mingli_contract/
lib.rs

1//! 端口层:叶与编排之间的契约。
2//!
3//! 这里只有**抽象**——一片叶要长成什么样([`CastingEngine`])、一次排盘的输入是什么
4//! ([`Query`])、一片叶如何声明自己的确定性边界与流派([`DetItem`] / [`SchoolItem`])、
5//! 需求侧有哪几类问局([`IntentSpec`])。
6//!
7//! 依赖方向:叶实现这里的 trait,编排层消费这里的 trait,**双方都不认识对方**。
8//! 本 crate 除共享时刻 [`mingli_astro::Moment`] 外不依赖任何领域实现。
9//!
10//! 按关注点分四份:[`ports`] 两个 trait 本身、[`query`] 输入、[`declare`] 叶的自述、
11//! [`intent`] 需求侧的问局分类。
12
13pub use mingli_astro::Moment;
14
15pub mod declare;
16pub mod intent;
17pub mod ports;
18pub mod query;
19pub mod validate;
20
21pub use declare::{d, s, DetItem, Determinism, Family, SchoolItem};
22pub use intent::{intents, Intent, IntentSpec, IntentStatus};
23pub use ports::{effective_school_id, Bearing, CastingEngine, LeafOutput, Principal, WordEngine, WordQuery};
24pub use query::{effective_seed, AskTime, Gender, Query, QueryKind, Subject};
25pub use validate::{days_in_month, validate_coords, validate_instant, validate_query};
26
27#[cfg(test)]
28mod tests;