pub struct MatterWave {
pub momentum: f64,
}Expand description
A lightweight matter-wave wrapper stored by momentum magnitude.
Fields§
§momentum: f64Momentum magnitude in kilogram meters per second.
Implementations§
Source§impl MatterWave
impl MatterWave
Sourcepub fn from_momentum(momentum: f64) -> Option<Self>
pub fn from_momentum(momentum: f64) -> Option<Self>
Creates a matter wave from a positive finite momentum magnitude.
Sourcepub fn from_mass_velocity(mass: f64, velocity: f64) -> Option<Self>
pub fn from_mass_velocity(mass: f64, velocity: f64) -> Option<Self>
Creates a matter wave from mass and velocity magnitude.
§Examples
use use_quantum::{MatterWave, PLANCK_CONSTANT};
let wave = MatterWave::from_mass_velocity(2.0, 3.0).ok_or("expected valid inputs")?;
assert!((wave.wavelength().ok_or("expected wavelength")? - (PLANCK_CONSTANT / 6.0)).abs() < 1.0e-12);Examples found in repository?
examples/basic_usage.rs (line 14)
11fn main() -> Result<(), &'static str> {
12 let photon = Photon::from_wavelength(500.0e-9).ok_or("expected valid photon wavelength")?;
13 let matter_wave =
14 MatterWave::from_mass_velocity(2.0, 3.0).ok_or("expected valid matter wave")?;
15 let quantum_numbers =
16 QuantumNumbers::new(2, 1, 0, 1).ok_or("expected valid quantum numbers")?;
17
18 assert!(photon.energy_ev().ok_or("expected photon energy in eV")? > 0.0);
19 assert!(
20 matter_wave
21 .wavelength()
22 .ok_or("expected matter wavelength")?
23 > 0.0
24 );
25 assert!(approx_eq(quantum_numbers.spin_projection(), 0.5));
26 assert!(approx_eq(
27 hydrogen_energy_level_ev(1).ok_or("expected hydrogen energy level")?,
28 -RYDBERG_ENERGY_EV,
29 ));
30 assert!(approx_eq(
31 minimum_position_uncertainty(REDUCED_PLANCK_CONSTANT)
32 .ok_or("expected minimum uncertainty")?,
33 0.5,
34 ));
35
36 Ok(())
37}Sourcepub fn wavelength(&self) -> Option<f64>
pub fn wavelength(&self) -> Option<f64>
Returns the de Broglie wavelength in meters.
Examples found in repository?
examples/basic_usage.rs (line 21)
11fn main() -> Result<(), &'static str> {
12 let photon = Photon::from_wavelength(500.0e-9).ok_or("expected valid photon wavelength")?;
13 let matter_wave =
14 MatterWave::from_mass_velocity(2.0, 3.0).ok_or("expected valid matter wave")?;
15 let quantum_numbers =
16 QuantumNumbers::new(2, 1, 0, 1).ok_or("expected valid quantum numbers")?;
17
18 assert!(photon.energy_ev().ok_or("expected photon energy in eV")? > 0.0);
19 assert!(
20 matter_wave
21 .wavelength()
22 .ok_or("expected matter wavelength")?
23 > 0.0
24 );
25 assert!(approx_eq(quantum_numbers.spin_projection(), 0.5));
26 assert!(approx_eq(
27 hydrogen_energy_level_ev(1).ok_or("expected hydrogen energy level")?,
28 -RYDBERG_ENERGY_EV,
29 ));
30 assert!(approx_eq(
31 minimum_position_uncertainty(REDUCED_PLANCK_CONSTANT)
32 .ok_or("expected minimum uncertainty")?,
33 0.5,
34 ));
35
36 Ok(())
37}Trait Implementations§
Source§impl Clone for MatterWave
impl Clone for MatterWave
Source§fn clone(&self) -> MatterWave
fn clone(&self) -> MatterWave
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 MatterWave
impl Debug for MatterWave
Source§impl PartialEq for MatterWave
impl PartialEq for MatterWave
Source§fn eq(&self, other: &MatterWave) -> bool
fn eq(&self, other: &MatterWave) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for MatterWave
impl StructuralPartialEq for MatterWave
Auto Trait Implementations§
impl Freeze for MatterWave
impl RefUnwindSafe for MatterWave
impl Send for MatterWave
impl Sync for MatterWave
impl Unpin for MatterWave
impl UnsafeUnpin for MatterWave
impl UnwindSafe for MatterWave
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