#[non_exhaustive]pub struct ProposalRecord {
pub proposal_id: String,
pub title: String,
pub summary: String,
pub details: Vec<u8>,
pub tags: Vec<String>,
pub proposer: String,
pub supersedes_proposal_id: Option<String>,
pub disposition: ProposalDisposition,
}Expand description
One proposal as it stands in the session’s serialized mode_state.
#[non_exhaustive] (0.8.0, DECISIONS.md D7), for the same reason as
the handoff and quorum records: this is runtime-produced coordination
state, deserialized from accepted envelopes, that grows a field whenever
the mode learns something new — ProposalState::rejections and
ProposalState::phase both carry #[serde(default)] because they were
added after the fact, and each would be a constructible_struct_adds_field
major today. release-plz.toml’s semver_check = true turns that into a
blocked release PR across all seven lockstep crates. 0.8.0 is already being
taken for the handoff field, so sealing the rest of the class here costs
nothing extra and makes every future field additive.
Fields stay pub and readable; only construction by struct literal from
another crate is refused, and nothing outside macp-modes constructs one —
the mode mints them from accepted envelopes, which is why no constructor is
offered in their place.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.proposal_id: String§title: String§summary: String§details: Vec<u8>§proposer: String§supersedes_proposal_id: Option<String>§disposition: ProposalDispositionTrait Implementations§
Source§impl Clone for ProposalRecord
impl Clone for ProposalRecord
Source§fn clone(&self) -> ProposalRecord
fn clone(&self) -> ProposalRecord
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProposalRecord
impl Debug for ProposalRecord
Source§impl<'de> Deserialize<'de> for ProposalRecord
impl<'de> Deserialize<'de> for ProposalRecord
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProposalRecord, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ProposalRecord, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for ProposalRecord
impl Serialize for ProposalRecord
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,
Auto Trait Implementations§
impl Freeze for ProposalRecord
impl RefUnwindSafe for ProposalRecord
impl Send for ProposalRecord
impl Sync for ProposalRecord
impl Unpin for ProposalRecord
impl UnsafeUnpin for ProposalRecord
impl UnwindSafe for ProposalRecord
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request