num_runtime_fmt/
dynamic.rs

1/// Container for setting certain parameters dynamically.
2#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
3pub struct Dynamic {
4    pub width: Option<usize>,
5    pub precision: Option<usize>,
6    pub spacing: Option<usize>,
7}
8
9impl Dynamic {
10    /// Construct a `Dynamic` instance, specifying all parameters.
11    ///
12    /// The parameters accept anything which can become an `Option<usize>`, so
13    /// it's possible to use both bare numbers and `None`:
14    ///
15    /// ```rust
16    /// # use num_runtime_fmt::Dynamic;
17    /// Dynamic::new(5, 3, None);
18    /// ```
19    pub fn new<W, P, S>(width: W, precision: P, spacing: S) -> Dynamic
20    where
21        W: Into<Option<usize>>,
22        P: Into<Option<usize>>,
23        S: Into<Option<usize>>,
24    {
25        Dynamic {
26            width: width.into(),
27            precision: precision.into(),
28            spacing: spacing.into(),
29        }
30    }
31
32    /// Construct a `Dynamic` instance specifying only `width`.
33    pub fn width(width: usize) -> Dynamic {
34        Dynamic {
35            width: Some(width),
36            ..Dynamic::default()
37        }
38    }
39
40    /// Construct a `Dynamic` instance specifying only `precision`.
41    pub fn precision(precision: usize) -> Dynamic {
42        Dynamic {
43            precision: Some(precision),
44            ..Dynamic::default()
45        }
46    }
47
48    /// Construct a `Dynamic` instance specifying only `spacing`.
49    pub fn spacing(spacing: usize) -> Dynamic {
50        Dynamic {
51            spacing: Some(spacing),
52            ..Dynamic::default()
53        }
54    }
55}