pub struct Photon {
pub energy_joules: f64,
}Expand description
A lightweight photon wrapper stored by energy in joules.
Fields§
§energy_joules: f64Photon energy in joules.
Implementations§
Source§impl Photon
impl Photon
Sourcepub fn from_energy_joules(energy_joules: f64) -> Option<Self>
pub fn from_energy_joules(energy_joules: f64) -> Option<Self>
Creates a photon from non-negative finite energy in joules.
Sourcepub fn from_frequency(frequency: f64) -> Option<Self>
pub fn from_frequency(frequency: f64) -> Option<Self>
Creates a photon from frequency.
Sourcepub fn from_wavelength(wavelength: f64) -> Option<Self>
pub fn from_wavelength(wavelength: f64) -> Option<Self>
Creates a photon from wavelength.
§Examples
use use_quantum::Photon;
let photon = Photon::from_wavelength(500.0e-9).ok_or("expected valid wavelength")?;
assert!(photon.energy_joules() > 0.0);Examples found in repository?
examples/basic_usage.rs (line 12)
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 const fn energy_joules(&self) -> f64
pub const fn energy_joules(&self) -> f64
Returns the photon energy in joules.
Sourcepub fn energy_ev(&self) -> Option<f64>
pub fn energy_ev(&self) -> Option<f64>
Returns the photon energy in electron volts.
Examples found in repository?
examples/basic_usage.rs (line 18)
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 photon wavelength in meters.
Trait Implementations§
impl Copy for Photon
impl StructuralPartialEq for Photon
Auto Trait Implementations§
impl Freeze for Photon
impl RefUnwindSafe for Photon
impl Send for Photon
impl Sync for Photon
impl Unpin for Photon
impl UnsafeUnpin for Photon
impl UnwindSafe for Photon
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