2014-11-30 9 views
5

Qual è la procedura consigliata per convertire Option<&str> in Option<String>? A rigor di termini Sto cercando un equivalente concisa:Conversione dall'opzione <&str> all'opzione <String>

if s.is_some() { 
    Some(s.to_string()) 
} else { 
    None 
} 

e questo è il meglio che ho potuto venire con:

s.and_then(|s| Some(s.to_string())) 

risposta

2

Un altro modo è utilizzare s.map(str::to_string):

let reference: Option<&str> = Some("whatever"); 
let owned: Option<String> = reference.map(str::to_string); 

Personalmente lo trovo più pulito senza la chiusura extra.

7

map è una scelta migliore:

s.map(|s| s.to_string()) 
Problemi correlati