pub struct Tension {
pub id: TensionId,
pub left: TensionSide,
pub right: TensionSide,
pub conflict_type: ConflictType,
pub detected_at: Timestamp,
pub resolution: Option<TensionResolution>,
}Expand description
Tension - explicit conflict between two proposals.
Per CONTEXT.md: Tension { left: ProposedFact, right: ProposedFact, conflict_type }
We use references (IDs) rather than owned proposals for flexibility.
§Example
use converge_core::types::{Tension, TensionId, TensionSide, ConflictType, ProposalId, Timestamp};
let tension = Tension::new(
TensionId::new("tension-1"),
TensionSide::new(ProposalId::new("p1"), "Focus on enterprise sales"),
TensionSide::new(ProposalId::new("p2"), "Focus on SMB market"),
ConflictType::PriorityMismatch,
);
assert_eq!(tension.id.as_str(), "tension-1");
assert!(!tension.is_resolved());Fields§
§id: TensionIdUnique identifier for this tension.
left: TensionSideLeft side of the conflict.
right: TensionSideRight side of the conflict.
conflict_type: ConflictTypeType of conflict.
detected_at: TimestampWhen the tension was detected.
resolution: Option<TensionResolution>Resolution (if resolved).
Implementations§
Source§impl Tension
impl Tension
Sourcepub fn new(
id: TensionId,
left: TensionSide,
right: TensionSide,
conflict_type: ConflictType,
) -> Tension
pub fn new( id: TensionId, left: TensionSide, right: TensionSide, conflict_type: ConflictType, ) -> Tension
Create a new unresolved tension.
Sourcepub fn is_resolved(&self) -> bool
pub fn is_resolved(&self) -> bool
Check if the tension has been resolved.
Sourcepub fn resolve(&mut self, resolution: TensionResolution)
pub fn resolve(&mut self, resolution: TensionResolution)
Resolve the tension.
Sourcepub fn winner(&self) -> Option<&ProposalId>
pub fn winner(&self) -> Option<&ProposalId>
Get the winning proposal ID (if resolved with a winner).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Tension
impl<'de> Deserialize<'de> for Tension
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Tension, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Tension, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for Tension
impl Serialize for Tension
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
Auto Trait Implementations§
impl Freeze for Tension
impl RefUnwindSafe for Tension
impl Send for Tension
impl Sync for Tension
impl Unpin for Tension
impl UnsafeUnpin for Tension
impl UnwindSafe for Tension
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