Rust: From Into - grizlupo/_ GitHub Wiki
ํ์ ๋ฐ๊พธ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ณต๋๋ ๊ฒ์ด From๊ณผ Into๋ค.
์ฐ์ From์ ์๋ก์ด ํ์ ์ ์ํ ๋ ๊ธฐ์กด์ ๋ค๋ฅธ ํ๋ค์ ์ ์ํ๋ ํ์ผ๋ก ๋ฐ๊ฟ ์ ์๋๋ก ํด ์ค๋ค.
use std::convert::From;
#[derive(Debug)]
struct Me {
value: i32
}
impl From<i32> for Me {
fn from(value: i32) -> Self {
Self { value }
}
}
fn main() {
println!("{:?}", Me::from(10));
}
์ ๋ง์ด์ง ์ธ๋ฐ ์์ด ๋ณด์ด๋ ์์ ์ง๋ง ๋ญ ์ด๋ฐ ์์ด๋ค.
๊ฒฐ๊ณผ๋ Me { value: 10 }
๋ฐ๋๋ก ์ ํ์ ๋ค๋ฅธ ํ์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉด
#![allow(unused)]
use std::convert::From;
#[derive(Debug)]
struct Me {
value: i32
}
impl From<Me> for String {
fn from(me: Me) -> String {
format!("value: {}", me.value)
}
}
fn main() {
println!("{}", String::from(Me { value: 10 }));
}
๊ฒฐ๊ณผ๋ value: 10
๊ทธ๋ผ Into๋ ๋ญ๊ฐ?
1.41 ์ด์ ๋ฒ์ ์ ๋ชฉํํ์ด ํ์ฌ crate์ด ์๋๋ฉด From์ ์ ์ํ ์ ์์๋ค๊ณ ํ๋ค.
๊ทธ๋์ impl From<Me> for String
์ด๋ ๊ฒ ํ ์๋ ์๊ณ ,
Me๊ฐ Into๋ฅผ ์ ์ํ๋ ๊ฒ์ผ๋ก ํด์ผ ํ๋ค.
์ด ์์ ๋ฅผ ๋ง๋๋ ์์ ์ Rust๋ ์์ ๋ฒ์ ์ด ์ด๋ฏธ 1.45.1์ด๊ธฐ ๋๋ฌธ์ ์๋๋ ๊ฒ์ ๋ณผ ์๊ฐ ์๋ค.
๊ทธ๋ ์ง๋ง ๋ฌธ์๋ ์ด๋ฐ ๊ฒฝ์ฐ์๋ Into๋ก ํ๋ผ๊ณ ํ๊ณ ์๋ค.
use std::convert::Into;
#[derive(Debug)]
struct Me {
value: i32
}
impl Into<String> for Me {
fn into(self) -> String {
format!("value: {}", self.value)
}
}
fn main() {
let s: String = (Me { value: 10 }).into();
println!("{}", s);
}