Skip to main content

ferroui_dynamic_data/cache/
indexed_item.rs

1//! `IndexedItem<TObject, TKey>` (`Cache/IndexedItem.cs`).
2
3use std::fmt;
4
5/// An item of a sorted collection with its key and its index (`IndexedItem<TObject, TKey>`). Two
6/// indexed items are equal when their keys, items and indexes are.
7#[derive(Clone, Debug, PartialEq, Eq, Hash)]
8pub struct IndexedItem<T, K> {
9    value: T,
10    key: K,
11    index: usize,
12}
13
14impl<T, K> IndexedItem<T, K> {
15    /// The item `value` of `key` at `index` (`IndexedItem(TObject value, TKey key, int index)`).
16    pub fn new(value: T, key: K, index: usize) -> Self {
17        Self { value, key, index }
18    }
19
20    /// The index (`Index`).
21    pub fn index(&self) -> usize {
22        self.index
23    }
24
25    /// The key (`Key`).
26    pub fn key(&self) -> &K {
27        &self.key
28    }
29
30    /// The item (`Value`).
31    pub fn value(&self) -> &T {
32        &self.value
33    }
34}
35
36impl<T: fmt::Display, K: fmt::Display> fmt::Display for IndexedItem<T, K> {
37    /// `ToString`.
38    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39        write!(f, "Value: {}, Key: {}, CurrentIndex: {}", self.value, self.key, self.index)
40    }
41}