Rust's Option
type should allow for the following:
let foo: Option<String> = Some("hello").into();
This could be done as &str
implements From<String>
.
The implementation would have the following signature:
impl<T, E> From<Option<T>> for Option<E>
where
T: Into<E>
And the conversion function would simply be:
fn from(val: Option<T>) -> Self {
val.map(Into::into)
}
On a side note, it would also be nice to be able to go from &str
into Option<String>
with an implementation of impl From<&str> for Option<String>
.
1 Like
Since T: Into<T>
this would generate an impl of From<Option<T>
for Option<T>
, which would conflict with the blanket impl of From<T> for T
.
6 Likes
jhpratt
September 2, 2021, 12:39pm
3
Once specialization lands, though, I wouldn't mind seeing this.
1 Like
I doubt this would be possible with the current specialization rules because neither impl
specializes the other, they're only overlapping. This case is mentioned in the specialization RFC under the "lattice rule", which is just an idea for future improvement and not something formalized and/or accepted.
4 Likes
system
Closed
December 1, 2021, 1:55pm
5
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.