yazi_core/tab/
history.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use std::{collections::HashMap, ops::{Deref, DerefMut}};

use yazi_shared::url::Url;

use super::Folder;

#[derive(Default)]
pub struct History(HashMap<Url, Folder>);

impl Deref for History {
	type Target = HashMap<Url, Folder>;

	#[inline]
	fn deref(&self) -> &Self::Target { &self.0 }
}

impl DerefMut for History {
	#[inline]
	fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 }
}

impl History {
	#[inline]
	pub fn remove_or(&mut self, url: &Url) -> Folder {
		self.0.remove(url).unwrap_or_else(|| Folder::from(url))
	}
}