To and from Strings
Converting to String
어떤 타입이든 String 타입으로 변환하는 것은 어렵지 않다. fmt::Display
trait 에서 편하게 toString
함수를 제공하기 때문이다.
use std::fmt::Display; struct PhoneNumList { num : Vec<i32>, } impl Display for PhoneNumList { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "number list -- {:?}", self.num) } } fn main() { // 폰번호 맨 앞자리 0이 사라지는 이유 알아보기 let list = PhoneNumList { num: vec![01029166767, 01029166766] }; println!("{}", list); }
Parsing a String, 문자열 형변환
러스트에선 문자열을 형변환 하는 것은 실제로는 까다로운데 String 문자열은 [u8] 형태로 구성되어 있기 때문이다.
그래서인지 러스트에서는 FromStr
trait 를 std::lib 에서 여러 타입에 제공하고 있다. 그래서 primative
타입들 중에 FromStr
을 구현한 타입들은 쉽게 형변환이 가능하다.
fn main() { // 타입 지정이 필요함. 뭘로 형변환 해야할지 알지 못함. let parsed:i32 = "5".parse().unwrap(); // turbofish syntax, 유용하니 눈 여겨 봐두자. let turbo_parsed = "10".parse::<i32>().unwrap(); println!("parse : {parsed}, turbofish : {turbo_parsed}"); }