After Chs 5 and 6 (see the reading club post here), we get a capstone quiz that covers ownership along with struts
and enums
.
So, lets do the quiz together! If you’ve done it already, revisiting might still be very instructive! I certainly thought these questions were useful “revision”.
I’ll post a comment for each question with the answer, along with my own personal notes (and quotes from The Book if helpful), behind spoiler tags.
Feel free to try to answer in a comment before checking (if you dare). But the main point is to understand the point the question is making, so share any confusions/difficulties too, and of course any corrections of my comments/notes!.
Q4: Method and Ownership
/// Gets the string out of an option if it exists, /// returning a default otherwise fn get_or_default(arg: &Option<String>) -> String { if arg.is_none() { return String::new(); } let s = arg.unwrap(); s.clone() }
Answer
2
arg
inarg.unwrap()
arg
is a reference.unwrap()
has signatureunwrap(self) -> T
: it takes ownership!unwrap
cannot take ownership (arg
doesn’t have ownership to move/give).