5 ms·
You might want to look into using `Arc<str>`. It's an immutable string slice that can have many owners and will be dropped once the last one is done with it.
by phaylon 5y ago
You might want to look into using `Arc<str>`. It's an immutable string slice that can have many owners and will be dropped once the last one is done with it.
- KingOfCoders 5y agoThanks, I will try that - fearing my code is littered with Arc ;-) - but sarcasm aside, thanks.
- phaylon 5y agoI usually just have a `type Text = std::sync::Arc<str>` at the root, specifically during prototyping :)
- rmdashrfstar 5y agoHow does this differ from just sharing &str?
- phaylon 5y agoA `&str` is a borrow of the string slice data, and has borrowing semantics. An `std::sync::Arc<str>` on the other hand isn't borrowed but has shared ownership and is atomically reference counted. Does that answer the question? Could you expand on what you mean by sharing `&str`?
- rmdashrfstar 5y agoI suppose my question is what motivates the use of atomically referencing counting string slice rather than borrowing?
- phaylon 5y agoYou can store it independently without it being borrowed. So your structs don't need lifetimes. I consider it a midpoint between `String` and `&str`. Most of the convenience of `String` (barring mutation) but less costly.