Rustでは厳格な静的型付けが使用されています。すべての変数と関数の型はコンパイル時に知られており、実行時に変更されることはありません。これは、コンパイラがプログラムの実行前に、不適切な型の使用に関するほとんどのエラーを事前に検出できることを意味します。
静的型付けは以下を提供します:
例:
let x: i32 = 5; let y: f64 = 2.0; let z = x as f64 + y; // 正常: xはf64に変換される // let w = x + y; // コンパイルエラー: 異なる型
Rustで数値和文字列の両方で動作する関数をどのように実装しますか? dyn Any型の使用だけで十分ですか?
回答:
dyn Anyを使用することで型のダウンキャストを行うことができますが、Rustの汎用関数にはジェネリクスと制約付きトレイトを使用する方が好ましいです。例えば:
use std::fmt::Display; fn print_value<T: Display>(val: T) { println!("{}", val); }
事例
事例
#[derive(Serialize)])を追加せずにenumをシリアライズすることを許可せず、リリースが24時間遅れました。事例
あるフィンテックプロジェクトで、プログラマーはRustがPythonやJavaScriptのように算術表現で型を自動的に変換すると考えました。その結果、コンパイル時に数百のエラーが発生し、型変換を明示的に指定するためにコードの一部を再設計する必要がありました。