Trait Sample

Source
pub unsafe trait Sample: Copy {
    const ZERO: Self;
}
Expand description

A sample that can be stored in an audio buffer. Types implementing this are known as being sample apt.

Sample apt types have the following gurantees:

  • The type does not need to be dropped (by implementing Copy).
  • The type can safely be initialized with the all-zeros bit pattern.

§Safety

Implementor must make sure that a bit-pattern of all-zeros is a legal bit-pattern for the implemented type.

Required Associated Constants§

Source

const ZERO: Self

The zero pattern for the sample.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Sample for f32

The bit-pattern of all zeros is a legal bit-pattern for floats.

See for example: https://doc.rust-lang.org/std/primitive.f32.html#method.to_bits.

Proof:

use audio::Sample;

assert_eq!((f64::ZERO).to_bits(), 0u64);
Source§

const ZERO: Self = 0f32

Source§

impl Sample for f64

The bit-pattern of all zeros is a legal bit-pattern for floats.

See for example: https://doc.rust-lang.org/std/primitive.f64.html#method.to_bits.

Proof:

use audio::Sample;

assert_eq!((f64::ZERO).to_bits(), 0u64);
Source§

const ZERO: Self = 0f64

Source§

impl Sample for i8

Source§

const ZERO: Self = 0i8

Source§

impl Sample for i16

Source§

const ZERO: Self = 0i16

Source§

impl Sample for i32

Source§

const ZERO: Self = 0i32

Source§

impl Sample for i64

Source§

const ZERO: Self = 0i64

Source§

impl Sample for i128

Source§

const ZERO: Self = 0i128

Source§

impl Sample for isize

Source§

const ZERO: Self = 0isize

Source§

impl Sample for u8

Source§

const ZERO: Self = 0u8

Source§

impl Sample for u16

Source§

const ZERO: Self = 0u16

Source§

impl Sample for u32

Source§

const ZERO: Self = 0u32

Source§

impl Sample for u64

Source§

const ZERO: Self = 0u64

Source§

impl Sample for u128

Source§

const ZERO: Self = 0u128

Source§

impl Sample for usize

Source§

const ZERO: Self = 0usize

Source§

impl<const N: usize> Sample for [u8; N]

Source§

const ZERO: Self

Implementors§