pub struct QuantumNumbers {
pub principal: u32,
pub azimuthal: u32,
pub magnetic: i32,
pub spin_twice: i8,
}Expand description
Quantum numbers for a single-electron atomic-state style validation helper.
Fields§
§principal: u32Principal quantum number n.
azimuthal: u32Azimuthal quantum number l.
magnetic: i32Magnetic quantum number m_l.
spin_twice: i8Twice the spin projection. 1 means +1/2, -1 means -1/2.
Implementations§
Source§impl QuantumNumbers
impl QuantumNumbers
Sourcepub fn new(
principal: u32,
azimuthal: u32,
magnetic: i32,
spin_twice: i8,
) -> Option<QuantumNumbers>
pub fn new( principal: u32, azimuthal: u32, magnetic: i32, spin_twice: i8, ) -> Option<QuantumNumbers>
Creates validated quantum numbers.
§Examples
use use_quantum::QuantumNumbers;
let quantum_numbers = QuantumNumbers::new(2, 1, 0, 1);
assert_eq!(
quantum_numbers,
Some(QuantumNumbers {
principal: 2,
azimuthal: 1,
magnetic: 0,
spin_twice: 1,
})
);Examples found in repository?
examples/facade_quantum.rs (line 11)
8fn main() -> Result<(), &'static str> {
9 let photon = Photon::from_frequency(1.0).ok_or("expected valid photon")?;
10 let quantum_numbers =
11 QuantumNumbers::new(2, 1, 0, 1).ok_or("expected valid quantum numbers")?;
12 let wavelength =
13 hydrogen_transition_wavelength(2, 1).ok_or("expected transition wavelength")?;
14
15 assert!(approx_eq(
16 photon.energy_joules(),
17 use_physics::PLANCK_CONSTANT
18 ));
19 assert!(approx_eq(quantum_numbers.spin_projection(), 0.5));
20 assert!(wavelength > 0.0);
21
22 Ok(())
23}Sourcepub fn spin_projection(&self) -> f64
pub fn spin_projection(&self) -> f64
Returns the spin projection in units of hbar.
Examples found in repository?
examples/facade_quantum.rs (line 19)
8fn main() -> Result<(), &'static str> {
9 let photon = Photon::from_frequency(1.0).ok_or("expected valid photon")?;
10 let quantum_numbers =
11 QuantumNumbers::new(2, 1, 0, 1).ok_or("expected valid quantum numbers")?;
12 let wavelength =
13 hydrogen_transition_wavelength(2, 1).ok_or("expected transition wavelength")?;
14
15 assert!(approx_eq(
16 photon.energy_joules(),
17 use_physics::PLANCK_CONSTANT
18 ));
19 assert!(approx_eq(quantum_numbers.spin_projection(), 0.5));
20 assert!(wavelength > 0.0);
21
22 Ok(())
23}Trait Implementations§
Source§impl Clone for QuantumNumbers
impl Clone for QuantumNumbers
Source§fn clone(&self) -> QuantumNumbers
fn clone(&self) -> QuantumNumbers
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for QuantumNumbers
impl Debug for QuantumNumbers
Source§impl Hash for QuantumNumbers
impl Hash for QuantumNumbers
Source§impl PartialEq for QuantumNumbers
impl PartialEq for QuantumNumbers
Source§fn eq(&self, other: &QuantumNumbers) -> bool
fn eq(&self, other: &QuantumNumbers) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for QuantumNumbers
impl Eq for QuantumNumbers
impl StructuralPartialEq for QuantumNumbers
Auto Trait Implementations§
impl Freeze for QuantumNumbers
impl RefUnwindSafe for QuantumNumbers
impl Send for QuantumNumbers
impl Sync for QuantumNumbers
impl Unpin for QuantumNumbers
impl UnsafeUnpin for QuantumNumbers
impl UnwindSafe for QuantumNumbers
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more