this post was submitted on 13 Aug 2023
8 points (90.0% liked)

Rust

5999 readers
7 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

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
 

When returning an immutable reference to a private struct field. (On mobile and used vertical bars instead of a bunch of HTML codes)

you are viewing a single comment's thread
view the rest of the comments
[โ€“] hallettj@beehaw.org 3 points 1 year ago (1 children)

You may be better off with &[String] as a read-only view of Vec. 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 that Option<&T> is the same size as &T for any T so an owned Option wrapper is zero-cost. If the reference pointer is null then Rust interprets that as None. Besides you usually want ownership of an Option so you can map it or whatever else you want to do.

[โ€“] jpfreely@programming.dev 1 points 1 year ago

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.