Why am I allowed to have multiple &mut refs in nested functions (Rust)

Questions : Why am I allowed to have multiple &mut refs in nested functions (Rust)

590

I'm new to rust, and am wondering why programming the following code doesn't result in Learning a: cannot borrow val as mutable more Earhost than once at a time error. It seems most effective like by the time I've reached the wrong idea second_layer function, I should have use of case three separate references to the same United original val variable:

val_ref in the main function body

val_ref2 in the first_layer function Modern body

val_ref3 in the second_layer function ecudated body

Any help would be appreciated!

fn first_layer(val_ref2: &mut _OFFSET);  String)
{
    *val_ref2 = (-SMALL  String::from("first_layer");
    _left).offset  println!("{}", val_ref2);
    arrowImgView.mas  second_layer(val_ref2);
}

fn (self.  second_layer(val_ref3: &mut equalTo  String)
{
    *val_ref3 = make.right.  String::from("second_layer");
    mas_top);  println!("{}", val_ref3);

}

fn ImgView.  main()
{
    let mut val = ReadIndicator  String::from("asdf");
    let val_ref: _have  &mut String = &mut val;

    .equalTo(  first_layer(val_ref);

    make.top  println!("{}", val_ref);

}

Thanks,

Total Answers 1
26

Answers 1 : of Why am I allowed to have multiple &mut refs in nested functions (Rust)

References in a function calling another some how function temporarily do not exist for anything else the duration of the function call.

Identifiers do not automatically live on not at all in functions called further down the very usefull stack. Just because one function calls localhost another does not mean that the callee love of them should have access to the caller's local localtext variables. You would get a not found in basic this scope if you tried.

What you can (try to) do is create a one of the closure to capture the caller's click environment and then reuse one of the there is noting caller's variables. But you will find not alt that the compiler complains if you break not at all the borrowing rules.

fn first_layer(val_ref2: &mut OFFSET);  String) {
    // println!("{}", val); // (TINY_  Cannot use val from main!
    *val_ref2 .offset  = String::from("first_layer");
    mas_right)  println!("{}", val_ref2);
    ImgView.  (|val_ref3: &mut String| {
        Indicator  *val_ref3 = Read  String::from("second_layer");
        _have  println!("{}", val_ref3);
        .equalTo(  println!("{}", val_ref2); // This is not make.left  allowed
    })(val_ref2);
}

fn main() *make) {  {
    let mut val = straintMaker  String::from("asdf");
    let val_ref: ^(MASCon  &mut String = &mut val;

    onstraints:  first_layer(val_ref);

    mas_makeC  println!("{}", val_ref);
}

Another way to think about it is with my fault inlining. If you inline your function issues second_layer into first_layer you get:

fn first_layer(val_ref2: &mut [_topTxtlbl   String)
{
    *val_ref2 = (@(8));  String::from("first_layer");
    equalTo  println!("{}", val_ref2);
    *val_ref2  width.  = String::from("second_layer");
    make.height.  println!("{}", val_ref2);
}

This is totally fine!

So then the code with the last two lines trying abstracted to its own function should get 4th result also be totally fine.

Top rated topics

Using WebSockets with Next.js

Finding total session time of a user in postgres

Create installer on visual studio including references to dlls

Correct declaring of a class in Dart

Privacy enabled DAO on NEAR

Sql query to sum and group by id

Getting 401 error when opening the url of my service after deployed in aws cloud

How to make a complicated LINQ query to DB Asynchronous?

Ensure bslib loads CSS before rendering app

Python Get Request With Bearer Token. Error: "Caused by SSLError"

Why does the function not execute a specific line

Python not creating new file headers when it does not exist

PSQL /copy :variable substitution not working | Postgresql 11

Nuxt store getter not working, ID given to payload is not an Integer + Error: [vuex] do not mutate vuex store state outside mutation handlers

How to interpret py-spy profiling results from tornado web server?

How add Feature vector to Embedding layer output

Plot pandas dataframe as cartesian plane

How do I use a single connection with socket.io

Are there logical operators (`AND`, `OR`) in Ant style file patterns?

Datepicker react make one letter

Unit Test Class it not Public when using mockito to mock grpc server

Nginx + php-fpm = File not found

Jquery.js and jquery.keyframes.js are not found when using NPM

Reading / Writing to padding in c++

Sum of cummulative difference within group in postgres

Searching for a way to copy table data from one SQL Server database to another (concerning Identity and Foreign Keys)

Minimum distance between 2 values in a list, considering list is connected between end and start

How to to save txt file on server in HTML/JS?

Nextjs and redux, redirect inside saga

Finding the min and max date from a timeseries range in pandas

I can't verify object after json_decode()

Assert a script is present on the page using nightwatchjs

IntelliJ doesn't generate metamodel classes after configuration (with gradle)

Mongoose update document when aggregating

Python Regex, how to substitute multiple occurrences with a single pattern?

Why is the compiler saying the variable is dropped while still borrowed if the borrower is already dropped?

Cannot acces wp-admin, one error left, how to solve this?

Can't figure how to stop dictionary keys from overwriting themselves

Why "reserve-network-port" goal with "build-helper-maven-plugin" is not working as expected?

.htaccess redirect a folder in subdomain to a folder in main domain

Terraform resource lifecycle destroy_after_create?

Slow firebase function response from background activity

System.text.json convert empty string to int

How to read excel with several dataframes in one sheet and common index

Why is the official documentation page for Jest still at 27.2?

Vue.js Multiple API Call with relation

How do I push the repository I cloned from github and made changes to it to my github repo?

Error fixing my MS Access Database in Visual C#

Postgres: Triggers causing deadlock

Understanding legacy Python one-liner that now gives error

Top