fn main() {
//let v: Vec = Vec::new();
//let mut v = vec![1,2,3];
let mut v = Vec::new();
v.push("asdf");
//v.push(4);
println!("Hello, world!");
}
여기서 v의 타입이 v.push에서 결정되는데 어떻게 이게 가능한거임?
그리고 Vec::new()를 정의한 순간 v에 벡터가 할당되는데 T가 없는데 어떡함?
v.push ~~ 줄 지우니깐 unknown error 뜨긴하던데 동작하는 원리가 뭐임?
컴파일러가 v를 처음 사용한지점 찾아내서 타입가져오는거?
그게 맞다면 이건 왜 안됨?
fn main() {
//let v: Vec = Vec::new();
//let mut v = vec![1,2,3];
let mut v = Vec::new();
foo(&mut v);
//v.push("asdf");
//v.push(4);
println!("Hello, world!");
}
fn foo(v: &mut Vec) {
v.push("asdf");
}
ㅈㄴ 어렵네 ㅠㅠ
타입추론이라고 하는데 Rust에선 로컬변수만 지원함
후자처럼 함수나 타입 시그니쳐에서도 타입추론이 이론상 가능하긴한데 이게 남발하면 플머랑 컴파일러 둘다 헷갈려서 일장일단이 있음
ㄳㄳ 타입추론 이론으로만 배웠지 직접 써보니깐 신기하네염