Struct DebugTag

Source
#[non_exhaustive]
pub struct DebugTag(/* private fields */);
Expand description

A value that guarentees that if two DebugTags are not equal, then they are not clones.

This can be used to tag information during debug, such that the use of a value can be tracked and checked. For example, you can use this to ensure (in debug) that a value returned by a data structure is only used with the instance that returned the value.

This tagging is only done if debug_assertions is set. If debug_assertions is not set, then all DebugTags are equal. Even if debug_assertions is set, two DebugTags that are not clones can still be equal. This is unlikely, however.

Therefore, functionality should not directly depend on the equality these tags but only use them for additional sanity checks.

Implementations§

Source§

impl DebugTag

Source

pub fn new() -> DebugTag

Creates a new DebugTag

Source

pub const fn from(_tag: u32) -> DebugTag

Create a new tag with the specified value.

Prefer using new instead, which will generate a value. Use this only in cases where that is not possible, like when creating a const debug tag.

The tag value should be a randomly chosen constant.

Trait Implementations§

Source§

impl Clone for DebugTag

Source§

fn clone(&self) -> DebugTag

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DebugTag

Source§

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

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

impl Default for DebugTag

Source§

fn default() -> DebugTag

Returns the “default value” for a type. Read more
Source§

impl PartialEq for DebugTag

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Copy for DebugTag

Source§

impl Eq for DebugTag

Source§

impl StructuralPartialEq for DebugTag

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