toolkit_contract/contract.rs
1use crate::descriptor::ContractDescriptor;
2use crate::ir::contract::ContractIr;
3
4/// Connects a `dyn Trait` type to its contract descriptor and IR.
5pub trait Contract: Send + Sync + 'static {
6 /// Returns the static descriptor for fast runtime lookups.
7 fn descriptor() -> &'static ContractDescriptor;
8
9 /// Builds the full Contract IR.
10 fn contract_ir() -> ContractIr;
11}
12
13pub use Contract as ServiceContract;