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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ Copyright: (c) 2023, Mike 'PhiSyX' S. (https://github.com/PhiSyX) ┃
// ┃ SPDX-License-Identifier: MPL-2.0 ┃
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
// ┃ ┃
// ┃ This Source Code Form is subject to the terms of the Mozilla Public ┃
// ┃ License, v. 2.0. If a copy of the MPL was not distributed with this ┃
// ┃ file, You can obtain one at https://mozilla.org/MPL/2.0/. ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
// --------- //
// Structure //
// --------- //
#[derive(Clone)]
pub struct RouteCollection<UserState>(Vec<super::Route<UserState>>);
// -------------- //
// Implémentation //
// -------------- //
impl<US> RouteCollection<US> {
#[allow(clippy::new_without_default)]
pub fn new() -> Self {
Self(Default::default())
}
}
impl<US> RouteCollection<US> {
/// Retourne toutes les routes de la collection.
pub fn all(&self) -> impl Iterator<Item = &super::Route<US>> {
self.0.iter()
}
}
impl<US> RouteCollection<US> {
/// Ajoute un router à la collection de route.
#[allow(clippy::should_implement_trait)]
pub fn add(mut self, router: super::Router<US>) -> Self {
assert!(router.action.is_some());
self.0.push(super::Route {
action: router.action.unwrap().to_owned(),
fullpath: router.fullpath,
name: Some(router.name),
methods: router.methods,
});
self
}
/// Étend une collection de routes avec la collection de routes déjà en
/// place.
pub fn extend(&mut self, this: Self)
where
US: Clone,
{
self.0.extend(this.0.to_vec());
}
}