Expand description
Module for holding the Semigroup typeclass definition and typeclass instances
You can, for example, combine tuples.
Examples
use frunk::Semigroup;
use frunk_core::hlist;
let t1 = (1, 2.5f32, String::from("hi"), Some(3));
let t2 = (1, 2.5f32, String::from(" world"), None);
let expected = (2, 5.0f32, String::from("hi world"), Some(3));
assert_eq!(t1.combine(&t2), expected);
// ultimately, the Tuple-based Semigroup implementations are only available for a maximum of
// 26 elements. If you need more, use HList, which is has no such limit.
let h1 = hlist![1, 3.3, 53i64];
let h2 = hlist![2, 1.2, 1i64];
let h3 = hlist![3, 4.5, 54];
assert_eq!(h1.combine(&h2), h3)
RunStructs
- Wrapper type for boolean that acts as a bitwise && combination
- Wrapper type for boolean that acts as a bitwise || combination
- Wrapper type for types that are ordered and can have a Max combination
- Wrapper type for types that are ordered and can have a Min combination
- Wrapper type for types that can have a Product combination
Traits
- A Semigroup is a class of thing that has a definable combine operation
Functions
- Given a sequence of
xs
, combine them and return the total - Return this combined with itself
n
times.