I have a tuple struct:
#[derive(Debug, Default, Clone)]
pub struct TerminatedString(pub String);
and I want it to behave like a string without unpacking:
let TerminatedString(text) = terminated_string;
could somebody explain, how to impl all string methods on this struct, so I can call them directly ?
let terminated_string = TerminatedString::from("test string");
You cannot, not at least in the sense you are thinking about, without manually forwarding each method.
However, you can make it such that a
TerminatedString can be borrowed (shared or exclusively) as a
String. For this there are two traits:
DerefMut. These allow your type to be borrowed as another type.
In fact, if you look at the docs of
String, you'll see that it has a
Deref impl for
str, meaning that many of the
String-methods are actually defined on
str and they are available on a
String because of the Deref-impl. These are documented here.
Thank you, I like this solution.