Метод as_mut
Метод as_mut преобразует значение в изменяемую
ссылку на него. Он возвращает &mut T,
что позволяет изменять данные через полученную ссылку.
Параметров метод не принимает. Метод доступен для
типов, реализующих трейт AsMut.
Синтаксис
value.as_mut()
Пример
Давайте получим изменяемую ссылку на число и изменим его:
fn main()
{
let mut num = 5;
let r: &mut i32 = num.as_mut();
*r = 10;
println!("{}", num);
}
Результат выполнения кода:
10
Пример
Давайте получим изменяемую ссылку на строку и изменим её содержимое:
fn main()
{
let mut s = String::from("abcde");
let r: &mut String = s.as_mut();
r.push_str("12345");
println!("{}", s);
}
Результат выполнения кода:
"abcde12345"
Пример
Давайте используем as_mut для изменения элемента
в векторе:
fn main()
{
let mut v = vec![1, 2, 3, 4, 5];
let r: &mut Vec<i32> = v.as_mut();
r.push(6);
println!("{:?}", v);
}
Результат выполнения кода:
[1, 2, 3, 4, 5, 6]