pub trait ResolutionPolicy<T: Conflictable>: Send + Sync {
// Required methods
fn resolve(&self, items: Vec<T>) -> Result<T>;
fn name(&self) -> &str;
}Expand description
Trait for conflict resolution policies
Implement this trait to define custom conflict resolution strategies.
§Example
use peat_protocol::policy::{ResolutionPolicy, Conflictable};
use peat_protocol::error::Result;
struct MyCustomPolicy;
impl<T: Conflictable> ResolutionPolicy<T> for MyCustomPolicy {
fn resolve(&self, mut items: Vec<T>) -> Result<T> {
// Custom logic here
Ok(items.into_iter().next().unwrap())
}
fn name(&self) -> &str {
"MY_CUSTOM_POLICY"
}
}Required Methods§
Sourcefn resolve(&self, items: Vec<T>) -> Result<T>
fn resolve(&self, items: Vec<T>) -> Result<T>
Resolve conflict between multiple items
Takes a list of conflicting items and returns the “winning” item according to the policy’s logic.
§Errors
Returns an error if the policy cannot resolve the conflict (e.g., all items are equal, required attributes missing).