-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Closed
Description
There is some symmetry between the methods of HashMap
's Entry
and Option
, e.g.
https://doc.rust-lang.org/nightly/std/collections/hash_map/enum.Entry.html#method.or_insert
https://doc.rust-lang.org/nightly/std/option/enum.Option.html#method.get_or_insert
https://doc.rust-lang.org/nightly/std/collections/hash_map/enum.Entry.html#method.or_insert_with
https://doc.rust-lang.org/nightly/std/option/enum.Option.html#method.get_or_insert_with
But the analogue of Entry
's or_default
is missing from Option
:
Option
should have a method get_or_default
, that does conceptually the same as or_default
by doing self.get_or_insert_with(|| Default::default())
(returns &mut T
).
(This use case occurs often in some projects of mine..)
Johni0702 and rickvanprim
Activity
clarfonthey commentedon Oct 13, 2018
This is already available as
Option::unwrap_or_default
.Centril commentedon Oct 13, 2018
Closing as completed.
Boscop commentedon Oct 14, 2018
@clarcharr It's not the same because it consumes the
Option
instead of mutating it.One can do
opt = Some(opt.unwrap_or_default());
but then one doesn't have a&mut T
to work with, that refers to theSome(..)
-content of theOption
!In the use-cases where I needed this, I need to have the
&mut T
from that point on, just like withEntry
'sor_default
. (In other cases, yes, I useunwrap_or_default
.)So I think it's still worth adding the
get_or_default
method that returns a&mut T
to the contents of theOption
.(In fact, I need this behavior more often with
Option
than withHashMap
'sEntry
.)@Centril Can we please re-open this issue? :)
CasperN commentedon Aug 5, 2020
Bump, please consider reopening this.
is 20 characters shorter than
Option::get_or_insert_default
#82901Rollup merge of rust-lang#82849 - camsteffen:option-get-or-default, r…
Rollup merge of rust-lang#82849 - camsteffen:option-get-or-default, r…
Rollup merge of rust-lang#82849 - camsteffen:option-get-or-default, r…