Занимать проверку и аргументы функции в Rust, правильно или более усердно? [Дубликат]

На этот вопрос уже есть ответ здесь:

Не может заимствовать как неизменяемый, потому что он также заимствован как изменяемый в аргументах функции 1 ответ

Когда изменяемый аргумент передается в качестве аргумента функции, средство проверки заимствования не позволяет использовать его для создания других аргументов, даже если эти аргументы клонируют значения без ссылки.

При назначении переменных вне функции всегда есть возможность1Логично, что это выглядит слишком усердно и что-то, что контролер заимствований мог бы принять во внимание.

Это работает как задумано или что-то должно быть решено?

#[derive(Debug)]
struct SomeTest {
    pub some_value: f64,
    pub some_other: i64,
}

fn some_fn(var: &mut SomeTest, other: i64) {
    println!("{:?}, {}", var, other);
}

fn main() {
    let mut v = SomeTest { some_value: 1.0, some_other: 2 };
    some_fn(&mut v, v.some_other + 1);

    // However this works!
/*
    {
        let x = v.some_other + 1;
        some_fn(&mut v, x);
    }
*/
}

Выдает эту ошибку:

  --> src/main.rs:14:21
   |
14 |     some_fn(&mut v, v.some_other + 1);
   |                  -  ^^^^^^^^^^^^ use of borrowed `v`
   |                  |
   |                  borrow of `v` occurs here

Увидеть:детский манеж.

[1]: Несмотря на то, что одноразовые назначения иногда улучшают читабельность, их использование в качестве аргументов поощряет использование областей, чтобы избежать одноразовых переменных, загрязняющих пространство имен, вызывая вызовы функций, которые в противном случае были бы одной строкой - заключенные в фигурные скобки и определяющие переменные ... Я хотел бы избежать этого, если это возможно, особенно когда требование кажется чем-то, что может поддерживать средство проверки заимствования.

Ответы на вопрос(1)

Ваш ответ на вопрос