Trait typenum::type_operators::Pow
source · pub trait Pow<Exp> {
type Output;
// Required method
fn powi(self, exp: Exp) -> Self::Output;
}
Expand description
A type operator that provides exponentiation by repeated squaring.
Example
use typenum::{Integer, Pow, N3, P3};
assert_eq!(<N3 as Pow<P3>>::Output::to_i32(), -27);
Required Associated Types§
Required Methods§
sourcefn powi(self, exp: Exp) -> Self::Output
fn powi(self, exp: Exp) -> Self::Output
This function isn’t used in this crate, but may be useful for others. It is implemented for primitives.
Example
use typenum::{Pow, U3};
let a = 7u32.powi(U3::new());
let b = 7u32.pow(3);
assert_eq!(a, b);
let x = 3.0.powi(U3::new());
let y = 27.0;
assert_eq!(x, y);
Implementations on Foreign Types§
Implementors§
source§impl<Ul, Ur: Unsigned + NonZero> Pow<PInt<Ur>> for PInt<Ul>where
Ul: Pow<Ur> + Unsigned + NonZero,
<Ul as Pow<Ur>>::Output: Unsigned + NonZero,
impl<Ul, Ur: Unsigned + NonZero> Pow<PInt<Ur>> for PInt<Ul>where Ul: Pow<Ur> + Unsigned + NonZero, <Ul as Pow<Ur>>::Output: Unsigned + NonZero,
P(Ul)^P(Ur) = P(Ul^Ur)
source§impl<Ul, Ur: Unsigned> Pow<PInt<UInt<Ur, B0>>> for NInt<Ul>where
Ul: Pow<UInt<Ur, B0>> + Unsigned + NonZero,
<Ul as Pow<UInt<Ur, B0>>>::Output: Unsigned + NonZero,
impl<Ul, Ur: Unsigned> Pow<PInt<UInt<Ur, B0>>> for NInt<Ul>where Ul: Pow<UInt<Ur, B0>> + Unsigned + NonZero, <Ul as Pow<UInt<Ur, B0>>>::Output: Unsigned + NonZero,
N(Ul)^P(Ur) = P(Ul^Ur) if Ur is even