Skip to main content

Mut

Struct Mut 

pub struct Mut<'w, T>
where T: ?Sized,
{ /* private fields */ }
Expand description

Unique mutable borrow of an entity’s component or of a resource.

This can be used in queries to access change detection from immutable query methods, as opposed to &mut T which only provides access to change detection from mutable query methods.

#[derive(Component, Clone, Debug)]
struct Name(String);

#[derive(Component, Clone, Copy, Debug)]
struct Health(f32);

fn my_system(mut query: Query<(Mut<Name>, &mut Health)>) {
    // Mutable access provides change detection information for both parameters:
    // - `name` has type `Mut<Name>`
    // - `health` has type `Mut<Health>`
    for (name, health) in query.iter_mut() {
        println!("Name: {:?} (last changed {:?})", name, name.last_changed());
        println!("Health: {:?} (last changed: {:?})", health, health.last_changed());
    }

    // Immutable access only provides change detection for `Name`:
    // - `name` has type `Ref<Name>`
    // - `health` has type `&Health`
    for (name, health) in query.iter() {
        println!("Name: {:?} (last changed {:?})", name, name.last_changed());
        println!("Health: {:?}", health);
    }
}

Implementations§

§

impl<'w, T> Mut<'w, T>
where T: ?Sized,

pub fn new( value: &'w mut T, added: &'w mut Tick, last_changed: &'w mut Tick, last_run: Tick, this_run: Tick, caller: MaybeLocation<&'w mut &'static Location<'static>>, ) -> Mut<'w, T>

Creates a new change-detection enabled smart pointer. In almost all cases you do not need to call this method manually, as instances of Mut will be created by engine-internal code.

Many use-cases of this method would be better served by Mut::map_unchanged or Mut::reborrow.

  • value - The value wrapped by this smart pointer.
  • added - A Tick that stores the tick when the wrapped value was created.
  • last_changed - A Tick that stores the last time the wrapped value was changed. This will be updated to the value of change_tick if the returned smart pointer is modified.
  • last_run - A Tick, occurring before this_run, which is used as a reference to determine whether the wrapped value is newly added or changed.
  • this_run - A Tick corresponding to the current point in time – “now”.

pub fn set_ticks(&mut self, last_run: Tick, this_run: Tick)

Overwrite the last_run and this_run tick that are used for change detection.

This is an advanced feature. Muts are usually created by engine-internal code and consumed by end-user code.

§

impl<'w, T> Mut<'w, T>
where T: ?Sized,

pub fn into_inner(self) -> &'w mut T

Consume self and return a mutable reference to the contained value while marking self as “changed”.

pub fn reborrow(&mut self) -> Mut<'_, T>

Returns a Mut<> with a smaller lifetime. This is useful if you have &mut Mut <T>, but you need a Mut<T>.

pub fn map_unchanged<U>(self, f: impl FnOnce(&mut T) -> &mut U) -> Mut<'w, U>
where U: ?Sized,

Maps to an inner value by applying a function to the contained reference, without flagging a change.

You should never modify the argument passed to the closure – if you want to modify the data without flagging a change, consider using DetectChangesMut::bypass_change_detection to make your intent explicit.

// When run, zeroes the translation of every entity.
fn reset_positions(mut transforms: Query<&mut Transform>) {
    for transform in &mut transforms {
        // We pinky promise not to modify `t` within the closure.
        // Breaking this promise will result in logic errors, but will never cause undefined behavior.
        let mut translation = transform.map_unchanged(|t| &mut t.translation);
        // Only reset the translation if it isn't already zero;
        translation.set_if_neq(Vec2::ZERO);
    }
}

pub fn filter_map_unchanged<U>( self, f: impl FnOnce(&mut T) -> Option<&mut U>, ) -> Option<Mut<'w, U>>
where U: ?Sized,

Optionally maps to an inner value by applying a function to the contained reference. This is useful in a situation where you need to convert a Mut<T> to a Mut<U>, but only if T contains U.

As with map_unchanged, you should never modify the argument passed to the closure.

pub fn try_map_unchanged<U, E>( self, f: impl FnOnce(&mut T) -> Result<&mut U, E>, ) -> Result<Mut<'w, U>, E>
where U: ?Sized,

Optionally maps to an inner value by applying a function to the contained reference, returns an error on failure. This is useful in a situation where you need to convert a Mut<T> to a Mut<U>, but only if T contains U.

As with map_unchanged, you should never modify the argument passed to the closure.

pub fn as_deref_mut(&mut self) -> Mut<'_, <T as Deref>::Target>
where T: DerefMut,

Allows you access to the dereferenced value of this pointer without immediately triggering change detection.

Trait Implementations§

§

impl<'w, T> AsMut<T> for Mut<'w, T>

§

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

Converts this type into a mutable reference of the (usually inferred) input type.
§

impl<'w, T> AsRef<T> for Mut<'w, T>

§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
§

impl<'__w, T> ContiguousQueryData for Mut<'__w, T>
where T: Component<Mutability = Mutable>,

§

type Contiguous<'w, 's> = ContiguousMut<'w, T>

Item returned by ContiguousQueryData::fetch_contiguous. Represents a contiguous chunk of memory.
§

unsafe fn fetch_contiguous<'w, 's>( state: &'s <Mut<'__w, T> as WorldQuery>::State, fetch: &mut <Mut<'__w, T> as WorldQuery>::Fetch<'w>, entities: &'w [Entity], ) -> <Mut<'__w, T> as ContiguousQueryData>::Contiguous<'w, 's>

Fetch ContiguousQueryData::Contiguous which represents a contiguous chunk of memory (e.g., an array) in the current Table. This must always be called after WorldQuery::set_table. Read more
§

impl<'w, T> Debug for Mut<'w, T>
where T: Debug + ?Sized,

§

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

Formats the value using the given formatter. Read more
§

impl<'w, T> Deref for Mut<'w, T>
where T: ?Sized,

§

type Target = T

The resulting type after dereferencing.
§

fn deref(&self) -> &<Mut<'w, T> as Deref>::Target

Dereferences the value.
§

impl<'w, T> DerefMut for Mut<'w, T>
where T: ?Sized,

§

fn deref_mut(&mut self) -> &mut <Mut<'w, T> as Deref>::Target

Mutably dereferences the value.
§

impl<'w, T> DetectChanges for Mut<'w, T>
where T: ?Sized,

§

fn is_added(&self) -> bool

Returns true if this value was added after the system last ran.
§

fn is_changed(&self) -> bool

Returns true if this value was added or mutably dereferenced either since the last time the system ran or, if the system never ran, since the beginning of the program. Read more
§

fn is_added_after(&self, other: Tick) -> bool

Returns true if this value was added after the other tick.
§

fn is_changed_after(&self, other: Tick) -> bool

Returns true if this value was added or mutably dereferenced after the other tick. Read more
§

fn last_changed(&self) -> Tick

Returns the change tick recording the time this data was most recently changed. Read more
§

fn added(&self) -> Tick

Returns the change tick recording the time this data was added.
§

fn changed_by(&self) -> MaybeLocation

The location that last caused this to change.
§

impl<'w, T> DetectChangesMut for Mut<'w, T>
where T: ?Sized,

§

type Inner = T

The type contained within this smart pointer Read more
§

fn set_changed(&mut self)

Flags this value as having been changed. Read more
§

fn set_added(&mut self)

Flags this value as having been added. Read more
§

fn set_last_changed(&mut self, last_changed: Tick)

Manually sets the change tick recording the time when this data was last mutated. Read more
§

fn set_last_added(&mut self, last_added: Tick)

Manually sets the added tick recording the time when this data was last added. Read more
§

fn bypass_change_detection( &mut self, ) -> &mut <Mut<'w, T> as DetectChangesMut>::Inner

Manually bypasses change detection, allowing you to mutate the underlying value without updating the change tick. Read more
§

fn set_if_neq(&mut self, value: Self::Inner) -> bool
where Self::Inner: Sized + PartialEq,

Overwrites this smart pointer with the given value, if and only if *self != value. Returns true if the value was overwritten, and returns false if it was not. Read more
§

fn replace_if_neq(&mut self, value: Self::Inner) -> Option<Self::Inner>
where Self::Inner: Sized + PartialEq,

Overwrites this smart pointer with the given value, if and only if *self != value, returning the previous value if this occurs. Read more
§

fn clone_from_if_neq<T>(&mut self, value: &T) -> bool
where T: ToOwned<Owned = Self::Inner> + ?Sized, Self::Inner: PartialEq<T>,

Overwrites this smart pointer with a clone of the given value, if and only if *self != value. Returns true if the value was overwritten, and returns false if it was not. Read more
§

impl<'w, T> From<Mut<'w, T>> for MutUntyped<'w>

§

fn from(value: Mut<'w, T>) -> MutUntyped<'w>

Converts to this type from the input type.
§

impl<'w, T> From<Mut<'w, T>> for Ref<'w, T>
where T: ?Sized,

§

fn from(mut_ref: Mut<'w, T>) -> Ref<'w, T>

Converts to this type from the input type.
§

impl<'w, T> From<NonSendMut<'w, T>> for Mut<'w, T>
where T: 'static,

§

fn from(other: NonSendMut<'w, T>) -> Mut<'w, T>

Convert this NonSendMut into a Mut. This allows keeping the change-detection feature of Mut while losing the specificity of NonSendMut.

§

impl<'w, T> From<ResMut<'w, T>> for Mut<'w, T>
where T: Resource<Mutability = Mutable>,

§

fn from(other: ResMut<'w, T>) -> Mut<'w, T>

Convert this ResMut into a Mut. This allows keeping the change-detection feature of Mut while losing the specificity of ResMut for resources.

§

impl<'w, 'a, T> IntoIterator for &'a Mut<'w, T>

§

type Item = <&'a T as IntoIterator>::Item

The type of the elements being iterated over.
§

type IntoIter = <&'a T as IntoIterator>::IntoIter

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <&'a Mut<'w, T> as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl<'w, 'a, T> IntoIterator for &'a mut Mut<'w, T>

§

type Item = <&'a mut T as IntoIterator>::Item

The type of the elements being iterated over.
§

type IntoIter = <&'a mut T as IntoIterator>::IntoIter

Which kind of iterator are we turning this into?
§

fn into_iter(self) -> <&'a mut Mut<'w, T> as IntoIterator>::IntoIter

Creates an iterator from a value. Read more
§

impl<'__w, T> QueryData for Mut<'__w, T>
where T: Component<Mutability = Mutable>,

§

const IS_READ_ONLY: bool = false

True if this query is read-only and may not perform mutable access.
§

const IS_ARCHETYPAL: bool = true

Returns true if (and only if) this query data relies strictly on archetypes to limit which entities are accessed by the Query. Read more
§

type ReadOnly = Ref<'__w, T>

The read-only variant of this QueryData, which satisfies the ReadOnlyQueryData trait.
§

type Item<'w, 's> = Mut<'w, T>

The item returned by this WorldQuery This will be the data retrieved by the query, and is visible to the end user when calling e.g. Query<Self>::get.
§

fn shrink<'wlong, 'wshort, 's>( item: <Mut<'__w, T> as QueryData>::Item<'wlong, 's>, ) -> <Mut<'__w, T> as QueryData>::Item<'wshort, 's>
where 'wlong: 'wshort,

This function manually implements subtyping for the query items.
§

unsafe fn fetch<'w, 's>( state: &'s <Mut<'__w, T> as WorldQuery>::State, fetch: &mut <Mut<'__w, T> as WorldQuery>::Fetch<'w>, entity: Entity, table_row: TableRow, ) -> Option<<Mut<'__w, T> as QueryData>::Item<'w, 's>>

Fetch Self::Item for either the given entity in the current Table, or for the given entity in the current Archetype. This must always be called after WorldQuery::set_table with a table_row in the range of the current Table or after WorldQuery::set_archetype with an entity in the current archetype. Accesses components registered in WorldQuery::update_component_access. Read more
§

fn iter_access( state: &<Mut<'__w, T> as WorldQuery>::State, ) -> impl Iterator<Item = EcsAccessType<'_>>

Returns an iterator over the access needed by QueryData::fetch. Access conflicts are usually checked in WorldQuery::update_component_access, but in certain cases this method can be useful to implement a way of checking for access conflicts in a non-allocating way.
§

fn provide_extra_access( _state: &mut Self::State, _access: &mut Access, _available_access: &Access, )

Offers additional access above what we requested in update_component_access. Implementations may add additional access that is a subset of available_access and does not conflict with anything in access, and must update access to include that access. Read more
§

impl<T> ReleaseStateQueryData for Mut<'_, T>
where T: Component<Mutability = Mutable>,

§

fn release_state<'w>( item: <Mut<'_, T> as QueryData>::Item<'w, '_>, ) -> <Mut<'_, T> as QueryData>::Item<'w, 'static>

Releases the borrow from the query state by converting an item to have a 'static state lifetime.
§

impl<'__w, T> WorldQuery for Mut<'__w, T>
where T: Component,

When Mut<T> is used in a query, it will be converted to Ref<T> when transformed into its read-only form, providing access to change detection methods.

By contrast &mut T will result in a Mut<T> item in mutable form to record mutations, but result in a bare &T in read-only form.

§

const IS_DENSE: bool = <&mut T as WorldQuery>::IS_DENSE

Returns true if (and only if) every table of every archetype matched by this fetch contains all of the matched components. Read more
§

type Fetch<'w> = WriteFetch<'w, T>

Per archetype/table state retrieved by this WorldQuery to compute Self::Item for each entity.
§

type State = ComponentId

State used to construct a Self::Fetch. This will be cached inside QueryState, so it is best to move as much data / computation here as possible to reduce the cost of constructing Self::Fetch.
§

fn shrink_fetch<'wlong, 'wshort>( fetch: <Mut<'__w, T> as WorldQuery>::Fetch<'wlong>, ) -> <Mut<'__w, T> as WorldQuery>::Fetch<'wshort>
where 'wlong: 'wshort,

This function manually implements subtyping for the query fetches.
§

unsafe fn init_fetch<'w, 's>( world: UnsafeWorldCell<'w>, state: &ComponentId, last_run: Tick, this_run: Tick, ) -> WriteFetch<'w, T>

Creates a new instance of Self::Fetch, by combining data from the World with the cached Self::State. Readonly accesses resources registered in WorldQuery::update_component_access. Read more
§

unsafe fn set_archetype<'w>( fetch: &mut WriteFetch<'w, T>, state: &ComponentId, archetype: &'w Archetype, table: &'w Table, )

Adjusts internal state to account for the next Archetype. This will always be called on archetypes that match this WorldQuery. Read more
§

unsafe fn set_table<'w>( fetch: &mut WriteFetch<'w, T>, state: &ComponentId, table: &'w Table, )

Adjusts internal state to account for the next Table. This will always be called on tables that match this WorldQuery. Read more
§

fn update_component_access(_: &ComponentId, access: &mut FilteredAccess)

Adds any component accesses to the current entity used by this WorldQuery to access. Read more
§

fn init_state(world: &mut World) -> ComponentId

Creates and initializes a State for this WorldQuery type.
§

fn get_state(components: &Components) -> Option<ComponentId>

Attempts to initialize a State for this WorldQuery type using read-only access to Components.
§

fn matches_component_set( state: &ComponentId, set_contains_id: &impl Fn(ComponentId) -> bool, ) -> bool

Returns true if this query matches a set of components. Otherwise, returns false. Read more
§

fn init_nested_access( _state: &Self::State, _system_name: Option<&str>, _component_access_set: &mut FilteredAccessSet, _world: UnsafeWorldCell<'_>, )

Adds any component accesses to other entities used by this WorldQuery. Read more
§

fn update_archetypes(_state: &mut Self::State, _world: UnsafeWorldCell<'_>)

Called when the query state is updating its archetype cache. This can be used by nested queries to update their internal archetype caches.
Source§

impl<T> WritePacket for Mut<'_, T>
where T: WritePacket,

Source§

fn write_packet_fallible<P>(&mut self, packet: &P) -> Result<(), Error>
where P: Packet + Encode,

Writes a packet to this object. The result of encoding the packet is returned.
Source§

fn write_packet_bytes(&mut self, bytes: &[u8])

Copies raw packet data directly into this object. Don’t use this unless you know what you’re doing.
Source§

fn write_packet<P>(&mut self, packet: &P)
where P: Packet + Encode,

Writes a packet to this object. Encoding errors are typically logged and discarded.
§

impl<T> ArchetypeQueryData for Mut<'_, T>
where T: Component<Mutability = Mutable>,

§

impl<T> IterQueryData for Mut<'_, T>
where T: Component<Mutability = Mutable>,

§

impl<T> SingleEntityQueryData for Mut<'_, T>
where T: Component<Mutability = Mutable>,

Auto Trait Implementations§

§

impl<'w, T> Freeze for Mut<'w, T>
where T: ?Sized,

§

impl<'w, T> RefUnwindSafe for Mut<'w, T>
where T: RefUnwindSafe + ?Sized,

§

impl<'w, T> Send for Mut<'w, T>
where T: Send + ?Sized,

§

impl<'w, T> Sync for Mut<'w, T>
where T: Sync + ?Sized,

§

impl<'w, T> Unpin for Mut<'w, T>
where T: ?Sized,

§

impl<'w, T> UnsafeUnpin for Mut<'w, T>
where T: ?Sized,

§

impl<'w, T> !UnwindSafe for Mut<'w, T>

Blanket Implementations§

§

impl<R> TryRngCore for R
where R: TryRng,

§

type Error = <R as TryRng>::Error

👎Deprecated since 0.10.0:

use TryRng instead

Error type.
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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<T> IntoResult<T> for T

§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
§

impl<A> Is for A
where A: Any,

§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
§

impl<R> Rng for R
where R: TryRng<Error = Infallible> + ?Sized,

§

fn next_u32(&mut self) -> u32

Return the next random u32.
§

fn next_u64(&mut self) -> u64

Return the next random u64.
§

fn fill_bytes(&mut self, dst: &mut [u8])

Fill dest with random data. Read more
§

impl<R> RngExt for R
where R: Rng + ?Sized,

§

fn random<T>(&mut self) -> T

Return a random value via the StandardUniform distribution. Read more
§

fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>

Return an iterator over random variates Read more
§

fn random_range<T, R>(&mut self, range: R) -> T
where T: SampleUniform, R: SampleRange<T>,

Generate a random value in the given range. Read more
§

fn random_bool(&mut self, p: f64) -> bool

Return a bool with a probability p of being true. Read more
§

fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool

Return a bool with a probability of numerator/denominator of being true. Read more
§

fn sample<T, D>(&mut self, distr: D) -> T
where D: Distribution<T>,

Sample a new value, using the given distribution. Read more
§

fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>
where D: Distribution<T>, Self: Sized,

Create an iterator that generates values using the given distribution. Read more
§

fn fill<T>(&mut self, dest: &mut [T])
where T: Fill,

Fill any type implementing Fill with random data Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SendMessage for T
where T: WritePacket,

Source§

fn send_chat_message<'a>(&mut self, msg: impl IntoText<'a>)

Sends a system message visible in the chat.
Source§

fn send_action_bar_message<'a>(&mut self, msg: impl IntoText<'a>)

Displays a message in the player’s action bar (text above the hotbar).
Source§

impl<T> SetBrand for T
where T: WritePacket,

Source§

fn set_brand(&mut self, brand: &str)

Sets the brand of the server. Read more
Source§

impl<T> SetTitle for T
where T: WritePacket,

Source§

fn set_title<'a>(&mut self, text: impl IntoText<'a>)

Displays a title to a client. Read more
Source§

fn set_subtitle<'a>(&mut self, text: impl IntoText<'a>)

Source§

fn set_action_bar<'a>(&mut self, text: impl IntoText<'a>)

Source§

fn set_title_times(&mut self, fade_in: i32, stay: i32, fade_out: i32)

fade_in: Ticks to spend fading in.stay: Ticks to keep the title displayed.fade_out: Ticks to spend fading out. Read more
Source§

fn clear_title(&mut self)

Source§

fn reset_title(&mut self)

§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
§

impl<R> TryRng for R
where R: DerefMut, <R as Deref>::Target: TryRng,

§

type Error = <<R as Deref>::Target as TryRng>::Error

The type returned in the event of a RNG error. Read more
§

fn try_next_u32(&mut self) -> Result<u32, <R as TryRng>::Error>

Return the next random u32.
§

fn try_next_u64(&mut self) -> Result<u64, <R as TryRng>::Error>

Return the next random u64.
§

fn try_fill_bytes(&mut self, dst: &mut [u8]) -> Result<(), <R as TryRng>::Error>

Fill dst entirely with random data.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> ConditionalSend for T
where T: Send,

§

impl<R> CryptoRng for R
where R: TryCryptoRng<Error = Infallible> + ?Sized,

§

impl<T> Formattable for T
where T: Deref, <T as Deref>::Target: Formattable,

§

impl<T> Parsable for T
where T: Deref, <T as Deref>::Target: Parsable,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

§

impl<R> RngCore for R
where R: Rng,

§

impl<R> TryCryptoRng for R
where R: DerefMut, <R as Deref>::Target: TryCryptoRng,