Skip to main content

ResolutionPolicy

Trait ResolutionPolicy 

Source
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§

Source

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).

Source

fn name(&self) -> &str

Policy name for logging and debugging

Implementors§