major overhaul of Backend from dynamic to static dispatch using an big enum
This commit is contained in:
@@ -1,26 +1,52 @@
|
||||
mod actual;
|
||||
mod backend_trait;
|
||||
mod iter;
|
||||
mod macros;
|
||||
pub mod actual;
|
||||
pub mod backend_trait;
|
||||
pub mod macros;
|
||||
mod root;
|
||||
mod todo_per_backend;
|
||||
pub mod todo_per_backend;
|
||||
|
||||
pub use backend_trait::Backend;
|
||||
pub use iter::BackendIter;
|
||||
pub use todo_per_backend::ToDoPerBackend;
|
||||
use crate::backend::backend_trait::Switches;
|
||||
use crate::backend::backend_trait::Text;
|
||||
use crate::Group;
|
||||
use crate::Package;
|
||||
use anyhow::Result;
|
||||
use backend_trait::Backend;
|
||||
use std::collections::HashSet;
|
||||
use std::rc::Rc;
|
||||
|
||||
use pacdef_macros::Register;
|
||||
use self::actual::{
|
||||
fedora::Fedora, flatpak::Flatpak, python::Python, rust::Rust, rustup::Rustup, void::Void,
|
||||
};
|
||||
|
||||
#[derive(Debug, Register)]
|
||||
pub enum Backends {
|
||||
#[derive(Debug)]
|
||||
#[enum_dispatch::enum_dispatch(Backend)]
|
||||
pub enum AnyBackend {
|
||||
#[cfg(feature = "arch")]
|
||||
Arch,
|
||||
Arch(actual::arch::Arch),
|
||||
#[cfg(feature = "debian")]
|
||||
Debian,
|
||||
Flatpak,
|
||||
Fedora,
|
||||
Python,
|
||||
Rust,
|
||||
Rustup,
|
||||
Void,
|
||||
Debian(actual::debian::Debian),
|
||||
Flatpak(Flatpak),
|
||||
Fedora(Fedora),
|
||||
Python(Python),
|
||||
Rust(Rust),
|
||||
Rustup(Rustup),
|
||||
Void(Void),
|
||||
}
|
||||
|
||||
impl AnyBackend {
|
||||
/// Returns an iterator of every variant of backend.
|
||||
pub fn iter() -> impl Iterator<Item = Self> {
|
||||
vec![
|
||||
#[cfg(feature = "arch")]
|
||||
Self::Arch(actual::arch::Arch::new()),
|
||||
#[cfg(feature = "debian")]
|
||||
Self::Debian(actual::debian::Debian::new()),
|
||||
Self::Flatpak(Flatpak::new()),
|
||||
Self::Fedora(Fedora::new()),
|
||||
Self::Python(Python::new()),
|
||||
Self::Rust(Rust::new()),
|
||||
Self::Rustup(Rustup::new()),
|
||||
Self::Void(Void::new()),
|
||||
]
|
||||
.into_iter()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user