What is this?
- A collection of crates, functions and renames I tend to use and rate as beeing 'general purpose'.
- A base where I don't have to look up how things works.
[!NOTE] This mainly exists so I can depend on it quick, easy and anywhere.
[!IMPORTANT] Since this crate doesn't have a specific purpose, it may change a lot between 'minor' versions. That said, I'll follow semantic versioning of course! ✨
What does it do?
- add
PhantomDataaliasGhost - re-export maflow: all
* - re-export type_cell: all
* - re-export buns:
selfandsandwich - re-export derive-new:
newasConstructor- e.g.
#[derive(Constructor)] struct AStruct{field:u32}->AStruct::new(2);
- e.g.
- re-export extension-traits:
extensionasext- e.g.
#[ext(trait F32Ext)] impl f32 {fn plus(self,rhs:f32)->f32{self+rhs}}->4.0.plus(4.0);
- e.g.
- re-export derive_more:
selfasderive_moreanddrv- e.g.
#[derive(drv::Deref)] struct AStruct(#[deref]u32);
- e.g.
- derive presets, by using derive_preset:
#[hashable(..)]=#[derive(PartialEq,Eq,Hash,Clone,Copy,..)]#[serde(..)]=#[derive(Serialize,Deserialize,Clone,..)]#[serde_hash(..)]=#[derive(Serialize,Deserialize,PartialEq,Eq,Hash,Clone,Copy,..)]#[deref(..)]=#[derive(drv::Deref,drv::DerefMut,..)]- Note: Assuming any
Hashderivator is small and therefore fine to be copied!
- auto-impl trait marker
Syncablefor anything implementing'static+Send+Sync- mainly used as 'rename' to use in trait bounds
- auto-impl trait
DefaultClearfor anything implementingDefault, id adds.clear()to set it back to default - auto-impl trait
Lerpablefor any type with necessary maths to perform linear interpolation- e.g.
3.0.lerp(4.0,0.1)or any future type you impl maths for
- e.g.
- auto-impl trait
LerpableDereffor any type that derefs to a type with necessary maths to perform linear interpolation- e.g.
#[deref] struct AStruct(#[deref]f32);->AStruct(3.0).lerp(AStruct(4.0),0.1)
- e.g.
- extend
f32by.smooth()to apply cheap ease-in and -out (smooth-step) if within 0..=1 - extend
f32by.clamp_unit()=.clamp(0.0,1.0) - extend
Ramge<T>&RangeInclusive<T>by.add(T)to offset it - macro
qonst!(quick const): set a type and a value, name is automatically set to the type name in uppercase - (optional) re-export fastrand:
selfasrandom- extend
Vecby.random()
- extend
- (optional) re-export fastapprox: all
*(modified) asapprox- extend
f32by.{operation}_ca(ca = circa (latin))
- extend
Synergies
A struct with PhantomData:
])
// Construct somewhere:
new;
Quick smooth interpolation of a struct with a f32:
// run:
let from = new;
let to = new;
from.lerp