use crate::*;
/// Generalized Euclidean division with optional runtime context.
///
/// Takes two elements `self` and `rhs` of different types,
/// and returns values satisfying `self = q * rhs + r`,
/// where, given some ordering, `r < rhs`.
/// `q` and `r` shall be of the same type as `self`.