mirror of
https://github.com/Noratrieb/bool-toggle.git
synced 2026-01-14 20:35:01 +01:00
feat: adhere to the strictest clean code standards and DRY
This commit is contained in:
parent
99b0badcb2
commit
d418c3f00f
2 changed files with 32 additions and 2 deletions
24
src/boolean_toggler.rs
Normal file
24
src/boolean_toggler.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
use super::TogglingIsALifestyle;
|
||||||
|
|
||||||
|
pub struct BooleanToggler<'a> {
|
||||||
|
bool_to_toggle: &'a mut bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TogglingIsALifestyle for BooleanToggler<'_> {
|
||||||
|
#[inline]
|
||||||
|
fn toggle(&mut self) {
|
||||||
|
// i'm enterprise fast
|
||||||
|
*self.bool_to_toggle ^= true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct BooleanTogglerFactory;
|
||||||
|
|
||||||
|
impl BooleanTogglerFactory {
|
||||||
|
#[inline]
|
||||||
|
pub fn create_boolean_toggler(bool_to_toggle: &mut bool) -> BooleanToggler {
|
||||||
|
return BooleanToggler {
|
||||||
|
bool_to_toggle: bool_to_toggle,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/lib.rs
10
src/lib.rs
|
|
@ -1,6 +1,10 @@
|
||||||
#![doc = include_str!("../README.md")]
|
#![doc = include_str!("../README.md")]
|
||||||
#![cfg_attr(docsrs, feature(doc_cfg))]
|
#![cfg_attr(docsrs, feature(doc_cfg))]
|
||||||
|
|
||||||
|
mod boolean_toggler;
|
||||||
|
|
||||||
|
use boolean_toggler::BooleanTogglerFactory;
|
||||||
|
|
||||||
// Extension trait for toggling a bool.
|
// Extension trait for toggling a bool.
|
||||||
pub trait TogglingIsALifestyle {
|
pub trait TogglingIsALifestyle {
|
||||||
/// Toggle the bool.
|
/// Toggle the bool.
|
||||||
|
|
@ -17,7 +21,8 @@ pub use TogglingIsALifestyle as IAmTheToggler;
|
||||||
impl TogglingIsALifestyle for bool {
|
impl TogglingIsALifestyle for bool {
|
||||||
fn toggle(&mut self) {
|
fn toggle(&mut self) {
|
||||||
// i am so smart
|
// i am so smart
|
||||||
*self ^= true;
|
let mut bool_toggler = BooleanTogglerFactory::create_boolean_toggler(self);
|
||||||
|
bool_toggler.toggle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -26,7 +31,8 @@ impl<const N: usize> TogglingIsALifestyle for [bool; N] {
|
||||||
fn toggle(&mut self) {
|
fn toggle(&mut self) {
|
||||||
// i am so fast
|
// i am so fast
|
||||||
for b in self {
|
for b in self {
|
||||||
*b ^= true;
|
let mut bool_toggler = BooleanTogglerFactory::create_boolean_toggler(self);
|
||||||
|
bool_toggler.toggle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue