Skip to main content

MassRelease

Struct MassRelease 

Source
#[non_exhaustive]
pub struct MassRelease { pub trigger: Trigger, pub component: String, pub drag_area_m2: f64, }
Expand description

A part carried inside the airframe that leaves it on trigger, and then falls to the ground on its own under drag_area_m2.

The part is an internal component named by its id, and it leaves with everything inside it. It can’t be a body component or an external one, one copy of a cluster’s, or hold a motor. Its mass can’t be under an override: not its stage’s, and not one on a component around it that covers what that component holds, since the override doesn’t say how much of the mass is the part’s. It must have mass, and leave the airframe some, motors aside. A part can be released once, and not from inside another part that is released.

The drag area C_D S is the part’s own once it is out, m²: a tumbling weight’s, or its parachute’s taken as open at once. It must be positive: a part with none would fall as if in a vacuum, which is a wrong number rather than a model.

A release can’t come before the rocket leaves the rail: the part has nowhere to go on the pad.

use hpr_sim::{MassRelease, Trigger};

// The part with id "payload" leaves at apogee and falls under 0.3 m² of parachute.
let release = MassRelease::new(Trigger::Apogee, "payload", 0.3);
assert_eq!(release.drag_area_m2, 0.3);

Give it to a flight with crate::Simulation::with_releases.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§trigger: Trigger

When the part leaves: the same triggers as a recovery device’s.

§component: String

The id of the internal component that leaves.

§drag_area_m2: f64

The part’s own drag area C_D S once it is out, m²: positive.

Implementations§

Source§

impl MassRelease

Source

pub fn new( trigger: Trigger, component: impl Into<String>, drag_area_m2: f64, ) -> Self

Internal component component leaving on trigger, then falling under drag_area_m2.

Trait Implementations§

Source§

impl Clone for MassRelease

Source§

fn clone(&self) -> MassRelease

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MassRelease

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MassRelease

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for MassRelease

Source§

fn eq(&self, other: &MassRelease) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for MassRelease

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for MassRelease

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.