fn use_or_default_nicer(thing_ref_opt: Option<&ExpensiveUnclonableThing>) { let mut maybe = None; let thing_ref = thing_ref_opt.unwrap_or_else( || maybe.insert(make_the_thing()) ); use_the_thing(thing_ref); }