Skip to main content

use_eigen/
eigenvalue.rs

1/// A scalar eigenvalue wrapper.
2#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub struct Eigenvalue<T> {
4    value: T,
5}
6
7impl<T> Eigenvalue<T> {
8    /// Creates a new eigenvalue.
9    #[must_use]
10    pub const fn new(value: T) -> Self {
11        Self { value }
12    }
13
14    /// Creates a new eigenvalue from a scalar value.
15    #[must_use]
16    pub const fn from_value(value: T) -> Self {
17        Self::new(value)
18    }
19
20    /// Returns the stored scalar value by reference.
21    #[must_use]
22    pub const fn as_ref(&self) -> &T {
23        &self.value
24    }
25
26    /// Returns the stored scalar value.
27    #[must_use]
28    pub fn into_inner(self) -> T {
29        self.value
30    }
31}
32
33impl<T> AsRef<T> for Eigenvalue<T> {
34    fn as_ref(&self) -> &T {
35        self.as_ref()
36    }
37}
38
39#[cfg(test)]
40mod tests {
41    use super::Eigenvalue;
42
43    #[test]
44    fn constructs_and_exposes_an_eigenvalue() {
45        let value = Eigenvalue::from_value(7_i32);
46
47        assert_eq!(*value.as_ref(), 7);
48        assert_eq!(value.into_inner(), 7);
49    }
50}