pub struct BestLeastRecentlyViewed { /* private fields */ }Expand description
Picks the available candidate that was least recently selected.
Candidates that have never been shown are treated as if they were last shown at turn 0, which gives them priority over candidates that have already been shown. Among candidates with equal “last seen” turns the one with the lower index wins.
This strategy is ideal for NPC barks and variation lines where you want maximum variety before repeating content.
§Example
use bubbles::saliency::{BestLeastRecentlyViewed, Candidate, SaliencyStrategy};
let mut s = BestLeastRecentlyViewed::default();
let candidates = vec![
Candidate { id: "a", available: true },
Candidate { id: "b", available: true },
Candidate { id: "c", available: true },
];
// First call - all unseen, picks index 0.
assert_eq!(s.select(&candidates), Some(0));
// Second call - "a" was just seen, picks "b" at index 1.
assert_eq!(s.select(&candidates), Some(1));
// Third call - picks "c" at index 2.
assert_eq!(s.select(&candidates), Some(2));
// Fourth call - all seen, wraps back to "a" (oldest).
assert_eq!(s.select(&candidates), Some(0));Implementations§
Trait Implementations§
Source§impl Clone for BestLeastRecentlyViewed
impl Clone for BestLeastRecentlyViewed
Source§fn clone(&self) -> BestLeastRecentlyViewed
fn clone(&self) -> BestLeastRecentlyViewed
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for BestLeastRecentlyViewed
impl Debug for BestLeastRecentlyViewed
Source§impl Default for BestLeastRecentlyViewed
impl Default for BestLeastRecentlyViewed
Source§fn default() -> BestLeastRecentlyViewed
fn default() -> BestLeastRecentlyViewed
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for BestLeastRecentlyViewed
impl RefUnwindSafe for BestLeastRecentlyViewed
impl Send for BestLeastRecentlyViewed
impl Sync for BestLeastRecentlyViewed
impl Unpin for BestLeastRecentlyViewed
impl UnsafeUnpin for BestLeastRecentlyViewed
impl UnwindSafe for BestLeastRecentlyViewed
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more