Skip to main content

specs_conflict

Function specs_conflict 

Source
pub fn specs_conflict(a: &MutationSpec, b: &MutationSpec) -> bool
Expand description

Check if two MutationSpecs conflict.

§Rules

  • Compare target_symbol fields using target_conflicts
  • Specs without target_symbol (project-wide) always conflict
  • Some variants have additional conflict rules (e.g., MoveItem has source+target)

§Conservative Defaults

  • Unknown/deprecated variants without target_symbol = always conflict
  • This ensures safety over performance

§Examples

use ryo_executor::executor::specs_conflict;
use ryo_executor::{MutationSpec, MutationTargetSymbol};
use ryo_symbol::SymbolId;

let id1 = SymbolId::parse("1v1").unwrap();
let id2 = SymbolId::parse("2v1").unwrap();

let spec_a = MutationSpec::AddField {
    target: MutationTargetSymbol::ById(id1),
    field_name: "name".into(),
    field_type: "String".into(),
    visibility: Default::default(),
};

let spec_b = MutationSpec::AddField {
    target: MutationTargetSymbol::ById(id2),
    field_name: "email".into(),
    field_type: "String".into(),
    visibility: Default::default(),
};

// Different targets = no conflict
assert!(!specs_conflict(&spec_a, &spec_b));