pub(crate) struct RngSeedContract<'a> {
pub formal: &'a str,
}Expand description
The seed contract of stats::simulate(), which
#[miniextendr(rng(seed = <param>))] writes into a standalone wrapper in
the order stats:::simulate.lm uses (#2198).
The prelude comes after the argument checks, so a
refused argument changes no RNG state. It creates .Random.seed when it is
missing. With a NULL seed it then remembers the state; otherwise it
registers the restore of the session’s state with on.exit() and calls
set.seed() with the value as passed, which validates it. The C wrapper’s
GetRNGstate() then loads the seeded state, and its PutRNGstate() saves
the state inside .Call(), before on.exit() puts the session’s state
back, also when the body returns an error or panics.
ATTRIBUTE records the seed in the result, after the
result’s condition check.
Fields§
§formal: &'a strThe seed’s R formal.
Implementations§
Source§impl RngSeedContract<'_>
impl RngSeedContract<'_>
Sourcepub(crate) const ATTRIBUTE: &'static str = "if (!is.null(.val) && (is.atomic(.val) || \
is.list(.val))) attr(.val, \"seed\") <- .mx_rng_state"
pub(crate) const ATTRIBUTE: &'static str = "if (!is.null(.val) && (is.atomic(.val) || \ is.list(.val))) attr(.val, \"seed\") <- .mx_rng_state"
The statement that gives the result .val its seed attribute. A
value that can’t carry attributes (NULL, an environment, an external
pointer, a function) is left as it is; NULL is tested on its own,
since is.atomic(NULL) is TRUE before R 4.4.
Auto Trait Implementations§
impl<'a> Freeze for RngSeedContract<'a>
impl<'a> RefUnwindSafe for RngSeedContract<'a>
impl<'a> Send for RngSeedContract<'a>
impl<'a> Sync for RngSeedContract<'a>
impl<'a> Unpin for RngSeedContract<'a>
impl<'a> UnsafeUnpin for RngSeedContract<'a>
impl<'a> UnwindSafe for RngSeedContract<'a>
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
Source§impl<T> SizeHint for Twhere
T: ?Sized,
impl<T> SizeHint for Twhere
T: ?Sized,
Source§default fn lower_bound(&self) -> usize
default fn lower_bound(&self) -> usize
core_io_internals)[u8; 12] could return any value between 0 and
12 inclusively as a correct implementation. Read moreSource§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
sized_type_properties)[Self]. Read moreLayout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes