러스트에서는 엄격한 정적 타입 지정이 사용됩니다: 모든 변수와 함수의 타입은 컴파일 단계에서 알려지며 실행 중에는 변경될 수 없습니다. 이는 컴파일러가 프로그램 실행 전에 타입의 잘못된 사용과 관련된 대부분의 오류를 사전에 발견할 수 있음을 의미합니다.
정적 타입 지정은 다음을 보장합니다:
예시:
let x: i32 = 5; let y: f64 = 2.0; let z = x as f64 + y; // 올바름: x는 f64로 변환됨 // let w = x + y; // 컴파일 오류: 서로 다른 타입
러스트에서 숫자와 문자열 모두에 작동하는 함수를 어떻게 구현합니까? dyn Any 타입의 사용만으로 충분합니까?
답변:
dyn Any를 사용하면 타입의 다운캐스트를 수행할 수 있지만, 러스트에서 범용 함수를 위해선 제네릭과 제한이 있는 트레이트를 사용하는 것이 선호됩니다. 예를 들어:
use std::fmt::Display; fn print_value<T: Display>(val: T) { println!("{}", val); }
이야기
이야기
#[derive(Serialize)])를 추가하지 않으면 enum을 직렬화할 수 없다고 알렸고, 이로 인해 출시가 하루 지연되었습니다.이야기
한 핀테크 프로젝트에서 프로그래머들은 러스트가 파이썬이나 자바스크립트처럼 산술 표현식에서 타입을 자동으로 변환한다고 생각했습니다. 그 결과 컴파일 단계에서 수백 개의 오류가 발생했고, 일부 코드를 다시 작성하여 타입 변환을 명시적으로 지정해야 했습니다.