pub struct BoundarySystemContract {Show 13 fields
pub name: String,
pub phase: BoundaryPhase,
pub cadence: SystemCadence,
pub reads: Vec<StateKey>,
pub writes: Vec<StateKey>,
pub emits: Vec<String>,
pub reservation_offers: Vec<StateKey>,
pub reservation_requests: Vec<StateKey>,
pub reservation_reads: Vec<ReservationRef>,
pub random_streams: Vec<RandomStreamKey>,
pub knowledge_writes: Vec<KnowledgeWriteGrant>,
pub plugin_ingress_targets: Vec<PluginIngressTarget>,
pub visibility: StateVisibility,
}Fields§
§name: String§phase: BoundaryPhase§cadence: SystemCadence§reads: Vec<StateKey>§writes: Vec<StateKey>§emits: Vec<String>§reservation_offers: Vec<StateKey>§reservation_requests: Vec<StateKey>§reservation_reads: Vec<ReservationRef>§random_streams: Vec<RandomStreamKey>§knowledge_writes: Vec<KnowledgeWriteGrant>§plugin_ingress_targets: Vec<PluginIngressTarget>§visibility: StateVisibilityImplementations§
Source§impl BoundarySystemContract
impl BoundarySystemContract
Sourcepub fn new(
name: impl Into<String>,
phase: BoundaryPhase,
cadence: SystemCadence,
) -> BoundarySystemContract
pub fn new( name: impl Into<String>, phase: BoundaryPhase, cadence: SystemCadence, ) -> BoundarySystemContract
Examples found in repository?
examples/phased_boundary.rs (lines 98-102)
97 fn register(&self, registrar: &mut canwu_api::PluginRegistrar<'_>) -> Result<(), CanwuError> {
98 let mut contract = BoundarySystemContract::new(
99 "offer",
100 BoundaryPhase::ReservationAndAllocation,
101 SystemCadence::Daily,
102 );
103 contract.reservation_offers = vec![StateKey::new("logistics", "grain")];
104 registrar.register_boundary_system(contract, offer_grain)
105 }
106}
107
108struct DemandPlugin;
109
110impl SimulationPlugin for DemandPlugin {
111 fn name(&self) -> &'static str {
112 "example-demand"
113 }
114
115 fn version(&self) -> &'static str {
116 "1.0.0"
117 }
118
119 fn semantic_hash(&self) -> &'static str {
120 "331b865359d4ac4a14c9bf90da665b82b4aa65ee63c195e331d8f1fa181e7029"
121 }
122
123 fn register(&self, registrar: &mut canwu_api::PluginRegistrar<'_>) -> Result<(), CanwuError> {
124 let mut request = BoundarySystemContract::new(
125 "request",
126 BoundaryPhase::ReservationAndAllocation,
127 SystemCadence::Daily,
128 );
129 request.reservation_requests = vec![StateKey::new("logistics", "grain")];
130 registrar.register_boundary_system(request, request_grain)?;
131
132 let mut apply = BoundarySystemContract::new(
133 "apply",
134 BoundaryPhase::DomainDeltaProposal,
135 SystemCadence::Daily,
136 );
137 apply.writes = vec![StateKey::new("garrison", "grain")];
138 apply.emits = vec!["grain_allocated".to_owned()];
139 apply.reservation_reads = vec![ReservationRef::new(
140 "example-demand",
141 "request",
142 "daily-grain",
143 )];
144 apply.visibility = StateVisibility::SameBoundary;
145 registrar.register_boundary_system(apply, apply_grain)
146 }Trait Implementations§
Source§impl Clone for BoundarySystemContract
impl Clone for BoundarySystemContract
Source§fn clone(&self) -> BoundarySystemContract
fn clone(&self) -> BoundarySystemContract
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for BoundarySystemContract
impl Debug for BoundarySystemContract
Source§impl<'de> Deserialize<'de> for BoundarySystemContract
impl<'de> Deserialize<'de> for BoundarySystemContract
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BoundarySystemContract, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BoundarySystemContract, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for BoundarySystemContract
Source§impl From<LegacyV4BoundarySystemContract> for BoundarySystemContract
impl From<LegacyV4BoundarySystemContract> for BoundarySystemContract
Source§fn from(value: LegacyV4BoundarySystemContract) -> BoundarySystemContract
fn from(value: LegacyV4BoundarySystemContract) -> BoundarySystemContract
Converts to this type from the input type.
Source§impl PartialEq for BoundarySystemContract
impl PartialEq for BoundarySystemContract
Source§impl Serialize for BoundarySystemContract
impl Serialize for BoundarySystemContract
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for BoundarySystemContract
Auto Trait Implementations§
impl Freeze for BoundarySystemContract
impl RefUnwindSafe for BoundarySystemContract
impl Send for BoundarySystemContract
impl Sync for BoundarySystemContract
impl Unpin for BoundarySystemContract
impl UnsafeUnpin for BoundarySystemContract
impl UnwindSafe for BoundarySystemContract
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more