fn main() {
let is_open: bool = true;
let initial: char = 'R';
let kanji: char = '実'; // char は日本語も1文字として持てる
println!("is_open = {}", is_open);
println!("initial = {}, kanji = {}", initial, kanji);
}
4as による明示的な型変換
i32 と f64 をそのまま計算できないので as で型を揃える、という Rust の約束事を示す例です。後半は i64 の 300 を u8(最大255)に変換すると値が壊れる様子で、as が「安全とは限らない変換」であることも体感できます。集計値の平均を出す処理などで as は日常的に登場します。
Rust
fn main() {
let count: i32 = 7;
let total: f64 = 19.5;
// i32 と f64 は直接計算できないので as で型を揃える
let average = total / count as f64;
println!("average = {}", average);
let big: i64 = 300;
let small = big as u8; // 収まらない変換は値が変わるので注意
println!("300 as u8 = {}", small);
}
5応答時間の平均をミリ秒で計算する
API の応答時間のような「負にならない大きめの整数」を u64 で持ち、平均だけ f64 で出す実務寄りの例です。合計や件数は整数で正確に持ち、割り算の瞬間だけ as f64 に変換するのが定石です。「データは整数、統計量は浮動小数点」という型の使い分けはログ集計や計測処理でそのまま使えます。
Rust
fn main() {
let total_ms: u64 = 1_532; // 3回分の応答時間の合計(ミリ秒)
let request_count: u64 = 3;
let average = total_ms as f64 / request_count as f64;
println!("合計 = {}ms", total_ms);
println!("平均 = {}ms", average);
}