this post was submitted on 13 Aug 2023
10 points (91.7% liked)
Rust
6036 readers
13 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
You may be better off with
&[String]
as a read-only view ofVec
. To get&[&str]
I think you need to create a new collection to hold the&str
values. (String
and&str
have different memory representations.) But the choice depends on what you want to do - maybe providing&str
values adds a convenience that is worth creating a second collection.For the Option case I would go with
Option<&[String]>
. My understanding is thatOption<&T>
is the same size as&T
for anyT
so an owned Option wrapper is zero-cost. If the reference pointer is null then Rust interprets that asNone
. Besides you usually want ownership of anOption
so you canmap
it or whatever else you want to do.Right, I want the convenience of &[&str] , but if it requires creating a second collection then I think &[String] is better. Use cases that require &str can just map to as_str.