Crate default_params

Source
Expand description

Do you want default function arguments or method parameters inside Rust?

Well, too bad! As this feature is currently not supported in Rust we can only emulate this functionality through macros and even more macros.

§Formalisation

Default parameters could be easily formalised as

struct DefaultParam<T, const VAL: T>(T);

§Reality

This approach however falls apart in a spectacular fashion as Rust doesn’t support types dependent on other types.

Sadly this leaves us no choice. We can currently only make default arguments for integer, bool and char types.

§How does this implementation work?

  • All supported types have a wrapper around them (i32 -> Di32, bool -> Dbool …)
  • Empty default arguments can be created via
let def1=Di32::<23>::new(); // Its value will be 23
  • Default arguments with values can be created via
let def2=Di32::<5>::from(53); // Its value will be 53
  • The value of default arguments can be unwrapped via
assert_eq!(def1.unwrap(),23);
assert_eq!(def2.unwrap(),53);

Structs§

Dbool
Default parameter for primitive type
Dchar
Default parameter for primitive type
Di8
Default parameter for primitive type
Di16
Default parameter for primitive type
Di32
Default parameter for primitive type
Di64
Default parameter for primitive type
Di128
Default parameter for primitive type
Disize
Default parameter for primitive type
Du8
Default parameter for primitive type
Du16
Default parameter for primitive type
Du32
Default parameter for primitive type
Du64
Default parameter for primitive type
Du128
Default parameter for primitive type
Dusize
Default parameter for primitive type

Traits§

DefaultParam
Trait for classifying default parameters