I'm wondering what is the simplest way to look up a value in a map-collection Map<_, String>
and use a string-literal (possibly the empty string) as a default. (For the purpose of this question, it doesn't matter whether the collection is HashMap
, BTreeMap
, or something else.)
The fundamental problem is that the value type, &String
, doesn't automatically deref to &str
in most attempts that I've tried.
The simplest working version I've found so far is:
h.get("baz").map_or("", |s| &s)
This looks weird to me, because .get()
already returns a reference, so the only purpose of the |s| &s
lambda is to trigger the Deref
trait.
I am a bit surprised I couldn't find any existing threads (here or anywhere else on the internet) about this; it seems like it would be a fairly common use case (e.g. when implementing environment variables in a shell).