& to me implies address and * means get the value at the address, would that be a valid way of thinking that data's address contains the NewUser struct? This would mean web::Form is really the address of some struct T.
Or does Deref mean something else in this context.
The additional & is necessary, because as rustc tells us, it would mean moving the NewUser out, but that's impossible because data still owns it, so borrowing (&) the dereferenced NewUser allows us to send it to values without violating ownership rules.
An alternative would be to do values(data.into_inner()) which moves the NewUser out of the web::Form by consuming it.
By the way, Nivethan, this is a wonderful series. Thank you so much for the effort you put in!
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Ah! Thank you that makes sense.
& to me implies address and * means get the value at the address, would that be a valid way of thinking that data's address contains the NewUser struct? This would mean web::Form is really the address of some struct T.
Or does Deref mean something else in this context.
web::Form
wrapsNewUser
, but it isn't a pointer to aNewUser
.Deref
forweb::Form
is very simple:The additional
&
is necessary, because asrustc
tells us, it would mean moving theNewUser
out, but that's impossible becausedata
still owns it, so borrowing (&
) the dereferencedNewUser
allows us to send it tovalues
without violating ownership rules.An alternative would be to do
values(data.into_inner())
which moves theNewUser
out of theweb::Form
by consuming it.By the way, Nivethan, this is a wonderful series. Thank you so much for the effort you put in!