pub struct Probability(/* private fields */);
Expand description
Type representing the probability an event.
This struct is just a wrapper around f64
that strictly enforces that the
probability lies in \([0, 1]\).
Implementations§
Source§impl Probability
impl Probability
Sourcepub fn new(p: f64) -> Result<Self, InvalidProbabilityError>
pub fn new(p: f64) -> Result<Self, InvalidProbabilityError>
Construct a probability, checking that the argument lies in \([0, 1]\).
§Examples
use rstat::Probability;
// Invalid probabilities:
assert!(Probability::new(1.5).is_err());
assert!(Probability::new(-1.0).is_err());
// Valid probabilities:
assert!(Probability::new(0.0).is_ok());
assert!(Probability::new(0.5).is_ok());
assert!(Probability::new(1.0).is_ok());
Sourcepub fn new_unchecked(p: f64) -> Probability
pub fn new_unchecked(p: f64) -> Probability
Construct a probability without checking for validity.
Sourcepub fn zero() -> Probability
pub fn zero() -> Probability
Returns a new Probability with value 0.
Sourcepub fn half() -> Probability
pub fn half() -> Probability
Returns a new Probability with value 0.5.
Sourcepub fn one() -> Probability
pub fn one() -> Probability
Returns a new Probability with value 1.
Sourcepub fn unwrap(self) -> f64
pub fn unwrap(self) -> f64
Unwrap the probability and return the internal f64
.
§Examples
use rstat::Probability;
assert_eq!(Probability::half().unwrap(), 0.5);
Sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Returns true if the probability lies in \([0, 1]\).
§Examples
use rstat::Probability;
assert!(Probability::new_unchecked(0.5).is_valid());
assert!(!Probability::new_unchecked(10.0).is_valid());
Sourcepub fn ln(self) -> f64
pub fn ln(self) -> f64
Return the natural logarithm of the probability: \(\ln{p}\).
§Examples
use rstat::Probability;
assert_eq!(Probability::one().ln(), 0.0);
Sourcepub fn log2(self) -> f64
pub fn log2(self) -> f64
Return the base-2 logarithm of the probability: \(\log_2{p}\).
§Examples
use rstat::Probability;
assert_eq!(Probability::half().log2(), -1.0);
Trait Implementations§
Source§impl<'a, 'b> Add<&'a Probability> for &'b Probability
impl<'a, 'b> Add<&'a Probability> for &'b Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
+
operator.Source§fn add(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn add( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
+
operation. Read moreSource§impl<'a, 'b> Add<&'a Probability> for &'b f64
impl<'a, 'b> Add<&'a Probability> for &'b f64
Source§impl<'a> Add<&'a Probability> for Probability
impl<'a> Add<&'a Probability> for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
+
operator.Source§fn add(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn add( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
+
operation. Read moreSource§impl<'a> Add<&'a Probability> for f64
impl<'a> Add<&'a Probability> for f64
Source§impl<'a, 'b> Add<&'a f64> for &'b Probability
impl<'a, 'b> Add<&'a f64> for &'b Probability
Source§impl<'a> Add<&'a f64> for Probability
impl<'a> Add<&'a f64> for Probability
Source§impl<'a> Add<Probability> for &'a Probability
impl<'a> Add<Probability> for &'a Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
+
operator.Source§fn add(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn add(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
+
operation. Read moreSource§impl<'a> Add<Probability> for &'a f64
impl<'a> Add<Probability> for &'a f64
Source§impl Add<Probability> for f64
impl Add<Probability> for f64
Source§impl<'a> Add<f64> for &'a Probability
impl<'a> Add<f64> for &'a Probability
Source§impl Add<f64> for Probability
impl Add<f64> for Probability
Source§impl Add for Probability
impl Add for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
+
operator.Source§fn add(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn add(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
+
operation. Read moreSource§impl Clone for Probability
impl Clone for Probability
Source§fn clone(&self) -> Probability
fn clone(&self) -> Probability
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for Probability
impl Debug for Probability
Source§impl Default for Probability
impl Default for Probability
Source§fn default() -> Probability
fn default() -> Probability
Returns the “default value” for a type. Read more
Source§impl Display for Probability
impl Display for Probability
Source§impl<'a, 'b> Div<&'a Probability> for &'b Probability
impl<'a, 'b> Div<&'a Probability> for &'b Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
/
operator.Source§fn div(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn div( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
/
operation. Read moreSource§impl<'a, 'b> Div<&'a Probability> for &'b f64
impl<'a, 'b> Div<&'a Probability> for &'b f64
Source§impl<'a> Div<&'a Probability> for Probability
impl<'a> Div<&'a Probability> for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
/
operator.Source§fn div(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn div( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
/
operation. Read moreSource§impl<'a> Div<&'a Probability> for f64
impl<'a> Div<&'a Probability> for f64
Source§impl<'a, 'b> Div<&'a f64> for &'b Probability
impl<'a, 'b> Div<&'a f64> for &'b Probability
Source§impl<'a> Div<&'a f64> for Probability
impl<'a> Div<&'a f64> for Probability
Source§impl<'a> Div<Probability> for &'a Probability
impl<'a> Div<Probability> for &'a Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
/
operator.Source§fn div(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn div(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
/
operation. Read moreSource§impl<'a> Div<Probability> for &'a f64
impl<'a> Div<Probability> for &'a f64
Source§impl Div<Probability> for f64
impl Div<Probability> for f64
Source§impl<'a> Div<f64> for &'a Probability
impl<'a> Div<f64> for &'a Probability
Source§impl Div<f64> for Probability
impl Div<f64> for Probability
Source§impl Div for Probability
impl Div for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
/
operator.Source§fn div(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn div(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
/
operation. Read moreSource§impl From<Probability> for f64
impl From<Probability> for f64
Source§fn from(p: Probability) -> f64
fn from(p: Probability) -> f64
Converts to this type from the input type.
Source§impl<'a, 'b> Mul<&'a Probability> for &'b Probability
impl<'a, 'b> Mul<&'a Probability> for &'b Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
*
operator.Source§fn mul(self, other: &'a Probability) -> Probability
fn mul(self, other: &'a Probability) -> Probability
Performs the
*
operation. Read moreSource§impl<'a, 'b> Mul<&'a Probability> for &'b f64
impl<'a, 'b> Mul<&'a Probability> for &'b f64
Source§impl<'a> Mul<&'a Probability> for Probability
impl<'a> Mul<&'a Probability> for Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
*
operator.Source§fn mul(self, other: &'a Probability) -> Probability
fn mul(self, other: &'a Probability) -> Probability
Performs the
*
operation. Read moreSource§impl<'a> Mul<&'a Probability> for f64
impl<'a> Mul<&'a Probability> for f64
Source§impl<'a, 'b> Mul<&'a f64> for &'b Probability
impl<'a, 'b> Mul<&'a f64> for &'b Probability
Source§impl<'a> Mul<&'a f64> for Probability
impl<'a> Mul<&'a f64> for Probability
Source§impl<'a> Mul<Probability> for &'a Probability
impl<'a> Mul<Probability> for &'a Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
*
operator.Source§fn mul(self, other: Probability) -> Probability
fn mul(self, other: Probability) -> Probability
Performs the
*
operation. Read moreSource§impl<'a> Mul<Probability> for &'a f64
impl<'a> Mul<Probability> for &'a f64
Source§impl Mul<Probability> for f64
impl Mul<Probability> for f64
Source§impl<'a> Mul<f64> for &'a Probability
impl<'a> Mul<f64> for &'a Probability
Source§impl Mul<f64> for Probability
impl Mul<f64> for Probability
Source§impl Mul for Probability
impl Mul for Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
*
operator.Source§fn mul(self, other: Probability) -> Probability
fn mul(self, other: Probability) -> Probability
Performs the
*
operation. Read moreSource§impl Not for &Probability
impl Not for &Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
!
operator.Source§fn not(self) -> Probability
fn not(self) -> Probability
Performs the unary
!
operation. Read moreSource§impl Not for Probability
impl Not for Probability
Source§type Output = Probability
type Output = Probability
The resulting type after applying the
!
operator.Source§fn not(self) -> Probability
fn not(self) -> Probability
Performs the unary
!
operation. Read moreSource§impl Param for Probability
impl Param for Probability
Source§impl PartialEq<f64> for Probability
impl PartialEq<f64> for Probability
Source§impl PartialEq for Probability
impl PartialEq for Probability
Source§impl PartialOrd for Probability
impl PartialOrd for Probability
Source§impl<'a, 'b> Rem<&'a Probability> for &'b Probability
impl<'a, 'b> Rem<&'a Probability> for &'b Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
%
operator.Source§fn rem(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn rem( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
%
operation. Read moreSource§impl<'a, 'b> Rem<&'a Probability> for &'b f64
impl<'a, 'b> Rem<&'a Probability> for &'b f64
Source§impl<'a> Rem<&'a Probability> for Probability
impl<'a> Rem<&'a Probability> for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
%
operator.Source§fn rem(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn rem( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
%
operation. Read moreSource§impl<'a> Rem<&'a Probability> for f64
impl<'a> Rem<&'a Probability> for f64
Source§impl<'a, 'b> Rem<&'a f64> for &'b Probability
impl<'a, 'b> Rem<&'a f64> for &'b Probability
Source§impl<'a> Rem<&'a f64> for Probability
impl<'a> Rem<&'a f64> for Probability
Source§impl<'a> Rem<Probability> for &'a Probability
impl<'a> Rem<Probability> for &'a Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
%
operator.Source§fn rem(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn rem(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
%
operation. Read moreSource§impl<'a> Rem<Probability> for &'a f64
impl<'a> Rem<Probability> for &'a f64
Source§impl Rem<Probability> for f64
impl Rem<Probability> for f64
Source§impl<'a> Rem<f64> for &'a Probability
impl<'a> Rem<f64> for &'a Probability
Source§impl Rem<f64> for Probability
impl Rem<f64> for Probability
Source§impl Rem for Probability
impl Rem for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
%
operator.Source§fn rem(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn rem(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
%
operation. Read moreSource§impl<'a, 'b> Sub<&'a Probability> for &'b Probability
impl<'a, 'b> Sub<&'a Probability> for &'b Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
-
operator.Source§fn sub(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn sub( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
-
operation. Read moreSource§impl<'a, 'b> Sub<&'a Probability> for &'b f64
impl<'a, 'b> Sub<&'a Probability> for &'b f64
Source§impl<'a> Sub<&'a Probability> for Probability
impl<'a> Sub<&'a Probability> for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
-
operator.Source§fn sub(
self,
other: &'a Probability,
) -> Result<Probability, InvalidProbabilityError>
fn sub( self, other: &'a Probability, ) -> Result<Probability, InvalidProbabilityError>
Performs the
-
operation. Read moreSource§impl<'a> Sub<&'a Probability> for f64
impl<'a> Sub<&'a Probability> for f64
Source§impl<'a, 'b> Sub<&'a f64> for &'b Probability
impl<'a, 'b> Sub<&'a f64> for &'b Probability
Source§impl<'a> Sub<&'a f64> for Probability
impl<'a> Sub<&'a f64> for Probability
Source§impl<'a> Sub<Probability> for &'a Probability
impl<'a> Sub<Probability> for &'a Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
-
operator.Source§fn sub(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn sub(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
-
operation. Read moreSource§impl<'a> Sub<Probability> for &'a f64
impl<'a> Sub<Probability> for &'a f64
Source§impl Sub<Probability> for f64
impl Sub<Probability> for f64
Source§impl<'a> Sub<f64> for &'a Probability
impl<'a> Sub<f64> for &'a Probability
Source§impl Sub<f64> for Probability
impl Sub<f64> for Probability
Source§impl Sub for Probability
impl Sub for Probability
Source§type Output = Result<Probability, InvalidProbabilityError>
type Output = Result<Probability, InvalidProbabilityError>
The resulting type after applying the
-
operator.Source§fn sub(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
fn sub(self, other: Probability) -> Result<Probability, InvalidProbabilityError>
Performs the
-
operation. Read moreSource§impl<'a> Sum<&'a Probability> for f64
impl<'a> Sum<&'a Probability> for f64
Source§impl Sum<Probability> for f64
impl Sum<Probability> for f64
Source§impl TryFrom<f64> for Probability
impl TryFrom<f64> for Probability
Source§type Error = InvalidProbabilityError
type Error = InvalidProbabilityError
The type returned in the event of a conversion error.
impl Copy for Probability
impl StructuralPartialEq for Probability
Auto Trait Implementations§
impl Freeze for Probability
impl RefUnwindSafe for Probability
impl Send for Probability
impl Sync for Probability
impl Unpin for Probability
impl UnwindSafe for Probability
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more