```
pub trait Sample: Sample {
// Required methods
fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self;
fn amplify(self, value: f32) -> Self;
fn saturating_add(self, other: Self) -> Self;
fn zero_value() -> Self;
}
```

## Expand description

Represents a value of a single sample.

This trait is implemented by default on three types: `i16`

, `u16`

and `f32`

.

- For
`i16`

, silence corresponds to the value`0`

. The minimum and maximum amplitudes are represented by`i16::min_value()`

and`i16::max_value()`

respectively. - For
`u16`

, silence corresponds to the value`u16::max_value() / 2`

. The minimum and maximum amplitudes are represented by`0`

and`u16::max_value()`

respectively. - For
`f32`

, silence corresponds to the value`0.0`

. The minimum and maximum amplitudes are represented by`-1.0`

and`1.0`

respectively.

You can implement this trait on your own type as well if you wish so.

## Required Methods§

#### fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self

#### fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self

Linear interpolation between two samples.

The result should be equal to
`first * numerator / denominator + second * (1 - numerator / denominator)`

.

#### fn saturating_add(self, other: Self) -> Self

#### fn saturating_add(self, other: Self) -> Self

Calls `saturating_add`

on the sample.

#### fn zero_value() -> Self

#### fn zero_value() -> Self

Returns the value corresponding to the absence of sound.

## Object Safety§

This trait is

**not**object safe.