Skip to main content

RngSeedContract

Struct RngSeedContract 

Source
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 str

The seed’s R formal.

Implementations§

Source§

impl RngSeedContract<'_>

Source

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.

Source

pub(crate) fn prelude(&self, indent: &str) -> String

The statements before .Call(), each line after the first prefixed by indent.

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> 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> 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> SizeHint for T
where T: ?Sized,

Source§

default fn lower_bound(&self) -> usize

🔬This is a nightly-only experimental API. (core_io_internals)
Returns a lower bound on the number of elements this container-like item contains. For example, an array [u8; 12] could return any value between 0 and 12 inclusively as a correct implementation. Read more
Source§

default fn upper_bound(&self) -> Option<usize>

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an upper bound on the number of elements this container-like item contains if it can be determined, otherwise None. Read more
Source§

final fn size_hint(&self) -> (usize, Option<usize>)

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an estimate for the number of elements this container like type contains. Read more
Source§

impl<T> SizedTypeProperties for T

Source§

#[doc(hidden)]
const SIZE: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGNMENT: Alignment = _

🔬This is a nightly-only experimental API. (ptr_alignment_type)
Source§

#[doc(hidden)]
const IS_ZST: bool = _

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
Source§

#[doc(hidden)]
const LAYOUT: Layout = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const MAX_SLICE_LEN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
The largest safe length for a [Self]. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.

Layout§

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