2014-11-30 20 views
5

Thực tiễn tốt nhất để chuyển đổi Option<&str> thành Option<String> là gì? Nói đúng ra tôi đang tìm kiếm một tương đương ngắn gọn:Chuyển đổi từ Tùy chọn <&str> thành Tùy chọn <String>

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

và đây là tốt nhất mà tôi có thể đưa ra:

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

Trả lời

2

Một cách khác là sử dụng s.map(str::to_string):

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

Cá nhân tôi thấy nó sạch hơn mà không cần đóng thêm.

7

map là một lựa chọn tốt hơn:

s.map(|s| s.to_string()) 
Các vấn đề liên quan