Second pass of doc cleanup.

This commit is contained in:
Dimitri Sabadie 2019-04-23 12:34:24 +02:00
parent dcd82f7301
commit 6ae3918eb1
2 changed files with 21 additions and 7 deletions

View File

@ -1,17 +1,23 @@
//! Available interpolation modes.
#[cfg(feature = "serialization")] use serde_derive::{Deserialize, Serialize}; #[cfg(feature = "serialization")] use serde_derive::{Deserialize, Serialize};
/// Interpolation mode. /// Available kind of interpolations.
///
/// Feel free to visit each variant for more documentation.
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
#[cfg_attr(feature = "serialization", derive(Deserialize, Serialize))] #[cfg_attr(feature = "serialization", derive(Deserialize, Serialize))]
#[cfg_attr(feature = "serialization", serde(rename_all = "snake_case"))] #[cfg_attr(feature = "serialization", serde(rename_all = "snake_case"))]
pub enum Interpolation<T> { pub enum Interpolation<T> {
/// Hold a [`Key`] until the interpolator value passes the normalized step threshold, in which /// Hold a [`Key<T, _>`] until the sampling value passes the normalized step threshold, in which
/// case the next key is used. /// case the next key is used.
/// ///
/// > Note: if you set the threshold to `0.5`, the first key will be used until half the time /// > Note: if you set the threshold to `0.5`, the first key will be used until half the time
/// > between the two keys; the second key will be in used afterwards. If you set it to `1.0`, the /// > between the two keys; the second key will be in used afterwards. If you set it to `1.0`, the
/// > first key will be kept until the next key. Set it to `0.` and the first key will never be /// > first key will be kept until the next key. Set it to `0.` and the first key will never be
/// > used. /// > used.
///
/// [`Key<T, _>`]: crate::key::Key
Step(T), Step(T),
/// Linear interpolation between a key and the next one. /// Linear interpolation between a key and the next one.
Linear, Linear,
@ -22,7 +28,7 @@ pub enum Interpolation<T> {
} }
impl<T> Default for Interpolation<T> { impl<T> Default for Interpolation<T> {
/// `Interpolation::Linear` is the default. /// [`Interpolation::Linear`] is the default.
fn default() -> Self { fn default() -> Self {
Interpolation::Linear Interpolation::Linear
} }

View File

@ -1,10 +1,18 @@
//! Spline [`Iterator`], in a nutshell.
//!
//! You can iterate over a [`Spline<K, V>`]s keys with the [`IntoIterator`] trait on
//! `&Spline<K, V>`. This gives you iterated [`Key<K, V>`] keys.
//!
//! [`Spline<K, V>`]: crate::spline::Spline
//! [`Key<K, V>`]: crate::key::Key
use crate::{Key, Spline}; use crate::{Key, Spline};
/// Iterator over spline keys. /// Iterator over spline keys.
/// ///
/// This iterator type assures you to iterate over sorted keys. /// This iterator type is guaranteed to iterate over sorted keys.
pub struct Iter<'a, T, V> where T: 'a, V: 'a { pub struct Iter<'a, T, V> where T: 'a, V: 'a {
anim_param: &'a Spline<T, V>, spline: &'a Spline<T, V>,
i: usize i: usize
} }
@ -12,7 +20,7 @@ impl<'a, T, V> Iterator for Iter<'a, T, V> {
type Item = &'a Key<T, V>; type Item = &'a Key<T, V>;
fn next(&mut self) -> Option<Self::Item> { fn next(&mut self) -> Option<Self::Item> {
let r = self.anim_param.0.get(self.i); let r = self.spline.0.get(self.i);
if let Some(_) = r { if let Some(_) = r {
self.i += 1; self.i += 1;
@ -28,7 +36,7 @@ impl<'a, T, V> IntoIterator for &'a Spline<T, V> {
fn into_iter(self) -> Self::IntoIter { fn into_iter(self) -> Self::IntoIter {
Iter { Iter {
anim_param: self, spline: self,
i: 0 i: 0
} }
} }