pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: https://doc.rust-lang.org/std/option/../string/../str/../clone/../string/../ops/trait.IndexMut.html

dium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>``).join(""))

IndexMut

Trait IndexMut 

1.0.0 (const: unstable) · Source
pub trait IndexMut<Idx>: Index<Idx>
where Idx: ?Sized,
{ // Required method fn index_mut(&mut self, index: Idx) -> &mut Self::Output; }
Expand description

Used for indexing operations (container[index]) in mutable contexts.

container[index] is actually syntactic sugar for *container.index_mut(index), but only when used as a mutable value. If an immutable value is requested, the Index trait is used instead. This allows nice things such as v[index] = value.

§Examples

A very simple implementation of a Balance struct that has two sides, where each can be indexed mutably and immutably.

use std::ops::{Index, IndexMut};

#[derive(Debug)]
enum Side {
    Left,
    Right,
}

#[derive(Debug, PartialEq)]
enum Weight {
    Kilogram(f32),
    Pound(f32),
}

struct Balance {
    pub left: Weight,
    pub right: Weight,
}

impl Index<Side> for Balance {
    type Output = Weight;

    fn index(&self, index: Side) -> &Self::Output {
        println!("Accessing {index:?}-side of balance immutably");
        match index {
            Side::Left => &self.left,
            Side::Right => &self.right,
        }
    }
}

impl IndexMut<Side> for Balance {
    fn index_mut(&mut self, index: Side) -> &mut Self::Output {
        println!("Accessing {index:?}-side of balance mutably");
        match index {
            Side::Left => &mut self.left,
            Side::Right => &mut self.right,
        }
    }
}

let mut balance = Balance {
    right: Weight::Kilogram(2.5),
    left: Weight::Pound(1.5),
};

// In this case, `balance[Side::Right]` is sugar for
// `*balance.index(Side::Right)`, since we are only *reading*
// `balance[Side::Right]`, not writing it.
assert_eq!(balance[Side::Right], Weight::Kilogram(2.5));

// However, in this case `balance[Side::Left]` is sugar for
// `*balance.index_mut(Side::Left)`, since we are writing
// `balance[Side::Left]`.
balance[Side::Left] = Weight::Kilogram(3.0);

Required Methods§

1.0.0 · Source

fn index_mut(&mut self, index: Idx) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation.

§Panics

May panic if the index is out of bounds.

Implementors§

Source§

impl IndexMut<usize> for ByteString

Source§

impl IndexMut<Range<usize>> for ByteString

Source§

impl IndexMut<RangeFrom<usize>> for ByteString

Source§

impl IndexMut<RangeFull> for ByteString

1.44.0 · Source§

impl IndexMut<RangeFull> for OsString

Source§

impl IndexMut<RangeInclusive<usize>> for ByteString

Source§

impl IndexMut<RangeTo<usize>> for ByteString

Source§

impl IndexMut<RangeToInclusive<usize>> for ByteString

1.0.0 (const: unstable) · Source§

impl<I> IndexMut<I> for str
where I: SliceIndex<str>,

Source§

impl<I> IndexMut<I> for ByteStr
where I: SliceIndex<ByteStr>,

1.0.0 · Source§

impl<I> IndexMut<I> for String
where I: SliceIndex<str>,

Source§

impl<I, T, const N: usize> IndexMut<I> for Simd<T, N>

1.0.0 · Source§

impl<T, A> IndexMut<usize> for VecDeque<T, A>
where A: Allocator,

1.0.0 (const: unstable) · Source§

impl<T, I> IndexMut<I> for [T]
where I: SliceIndex<[T]>,

1.0.0 · Source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where I: SliceIndex<[T]>, A: Allocator,

1.50.0 (const: unstable) · Source§

impl<T, I, const N: usize> IndexMut<I> for [T; N]
where [T]: IndexMut<I>,

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy