fn add(x: i32, y: i32) -> i32 { return x + y; } fn main(){ let r = add(4, 7); println!("{}", r); }
C++で関数を使って書いてみる
#include <iostream> #include <stdio.h> #include <string> #include <map> int total(std::map<std::string, int> &cart){ int price = 0; for(auto i : cart){ price = price + i.second; } std::cout << "※合計: " << price << "円" << std::endl; return price; } int tax(int price) { int tax_price = price * 0.1; std::cout << "※税: " << tax_price << "円" << std::endl; return tax_price; } void cashier(std::map<std::string, int> &cart) { for(auto i: cart) { std::cout << i.first << ": " << i.second << "円" << std::endl; } int price = total(cart); int tax_price = tax(price); std::cout << "お会計: " << price + tax_price << "円" << std::endl; } int main() { std::map<std::string, int> cart; cart["Crab mayoo"] = 2280; cart["Salad"] = 780; cart["Cola"] = 190; cashier(cart); return 0; }
上記をRustで記述する。
use std::collections::HashMap; fn total(cart :HashMap<&str, u32> )-> u32 { let mut price: u32 = 0; for (key, value) in cart.iter() { price = price + value; println!("{} : {}円", key, value); } println!("※合計 {}円", price); return price; } fn tax(price: u32) -> u32 { let tax: u32 = price / 10; println!("※税 {}円", tax); return tax; } fn cashier(cart :HashMap<&str, u32>) { let price: u32 = total(cart); let tax_price = tax(price); println!("合計 {}円", price + tax_price); } fn main(){ let mut cart = HashMap::new(); cart.insert("Crab mayoo", 2280); cart.insert("Salad", 780); cart.insert("Cola", 190); cashier(cart); }
なるほど、u32 * floatはできないので、price * 0.1とするとエラーになる。
Rustは型指定が結構大変だなぁ