Skip to main content

onebot_api/
selector.rs

1pub struct Selector<'a, T> {
2	pub(crate) data: Option<&'a T>,
3}
4
5impl<'a, T> Selector<'a, T> {
6	pub fn map<R>(&self, handler: impl FnOnce(&'a T) -> R) -> Option<R> {
7		self.data.map(handler)
8	}
9
10	pub async fn map_async<R>(&self, handler: impl AsyncFnOnce(&'a T) -> R) -> Option<R> {
11		if let Some(data) = self.data {
12			Some(handler(data).await)
13		} else {
14			None
15		}
16	}
17
18	pub fn select(&self) -> Option<&'a T> {
19		self.data
20	}
21
22	pub fn is_matched(&self) -> bool {
23		self.data.is_some()
24	}
25}