pub fn specs_conflict(a: &MutationSpec, b: &MutationSpec) -> boolExpand 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));