Skip to main content

IdempotencyIntent

Struct IdempotencyIntent 

Source
pub struct IdempotencyIntent<'secret> { /* private fields */ }
Expand description

One-use fresh intent identifier supplied by a caller CSPRNG.

This type is intentionally neither Copy nor Clone. Construction checks shape and retains exclusive access to caller storage until drop. Invalid sources are cleared immediately. Entropy quality and global uniqueness remain caller duties.

use cloud_sdk::retry::IdempotencyIntent;

let mut entropy = [7_u8; 32];
let intent = IdempotencyIntent::new(&mut entropy).unwrap();
let _duplicate = intent.clone();

Implementations§

Source§

impl<'secret> IdempotencyIntent<'secret>

Source

pub fn new(source: &'secret mut [u8]) -> Result<Self, IdempotencyIntentError>

Borrows fresh bytes exclusively and clears invalid sources immediately.

Source

pub const fn len(&self) -> usize

Returns the identifier length without exposing entropy bytes.

Source

pub const fn is_empty(&self) -> bool

Reports whether the identifier is empty. A valid intent is never empty.

Trait Implementations§

Source§

impl Debug for IdempotencyIntent<'_>

Source§

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

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

impl Drop for IdempotencyIntent<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'secret> !UnwindSafe for IdempotencyIntent<'secret>

§

impl<'secret> Freeze for IdempotencyIntent<'secret>

§

impl<'secret> RefUnwindSafe for IdempotencyIntent<'secret>

§

impl<'secret> Send for IdempotencyIntent<'secret>

§

impl<'secret> Sync for IdempotencyIntent<'secret>

§

impl<'secret> Unpin for IdempotencyIntent<'secret>

§

impl<'secret> UnsafeUnpin for IdempotencyIntent<'secret>

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, 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.