우선 러스트의 자동 dereference로 인해 어떤 함수의 인자 타입이 &str이면 &String 타입을 넣어도 상관없잖아?
그런데 String타입을 넣으면 에러가 나잖아?
문제는 아래코드는 정상작동하는데 이유를 모르겠는데 자세히 설명좀 해주실분?
let s1 = String::from("hello"); // s1의 타입은 String
let s2 = String::from(s1); // from함수는 &str을 인자로 받음 근데 잘 동작함
우선 러스트의 자동 dereference로 인해 어떤 함수의 인자 타입이 &str이면 &String 타입을 넣어도 상관없잖아?
그런데 String타입을 넣으면 에러가 나잖아?
문제는 아래코드는 정상작동하는데 이유를 모르겠는데 자세히 설명좀 해주실분?
let s1 = String::from("hello"); // s1의 타입은 String
let s2 = String::from(s1); // from함수는 &str을 인자로 받음 근데 잘 동작함
니가 전달한 문자열 리터럴은 타입이 &str이다
아 글 수정함 오타가잇엇네
너 설마 제네릭이라고 들어본적은 있냐
From 트레잇을 구현해서 그럼
https://doc.rust-lang.org/std/convert/trait.From.html#examples
From trait에 대한 generic implementation이 입력값을 그대로 반환하는 거라서 그럼
코드 뜯어보고 싶으면
https://doc.rust-lang.org/src/core/convert/mod.rs.html#369-375
에서 554-562번 줄 보면 됨
string 암만 찾아도 안보였는데 이거였구나