pub trait SchemaTransaction {
// Required methods
fn get_classes(&self) -> &HashMap<AttrString, SchemaClass>;
fn get_attributes(&self) -> &HashMap<Attribute, SchemaAttribute>;
fn get_attributes_unique(&self) -> &Vec<Attribute>;
fn get_reference_types(&self) -> &HashMap<Attribute, SchemaAttribute>;
// Provided methods
fn validate(&self) -> Vec<Result<(), ConsistencyError>> { ... }
fn is_replicated(&self, attr: &Attribute) -> bool { ... }
fn is_multivalue(&self, attr: &Attribute) -> Result<bool, SchemaError> { ... }
fn normalise_attr_if_exists(&self, an: &str) -> Option<Attribute> { ... }
fn query_attrs_difference(
&self,
prev_class: &BTreeSet<&str>,
new_class: &BTreeSet<&str>,
) -> Result<(BTreeSet<&str>, BTreeSet<&str>), SchemaError> { ... }
}