アイテムの追加
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 50/66。
チャレンジ
簡単3つの入力を受け取ります。最初の入力はアイテム名、2番目の入力はアイテムの価格、3番目の入力は初期在庫数です。キーをアイテム名、値を価格と数量を含むタプル (f64, i32) とする、在庫データを格納するための HashMap を作成してください。アイテムを在庫に追加し、確認メッセージに続いて現在の在庫の詳細を出力してください。
要件:
std::collectionsからHashMapをインポートする- 最初の入力(アイテム名)を読み取り、空白をトリミングする
- 2番目の入力(価格)を読み取り、空白をトリミングする
- 価格を
f64にパースする - 3番目の入力(数量)を読み取り、空白をトリミングする
- 数量を
i32にパースする - 在庫用にミュータブルな
HashMap<String, (f64, i32)>を作成する - 価格と数量をタプルとして在庫にアイテムを挿入する
- 出力:
Added [item_name] to inventory - 出力:
Price: $[price] - 出力:
Quantity: [quantity]
入力:
- 1行目: アイテム名 (例:
Laptop) - 2行目: 数値としての価格 (例:
999.99) - 3行目: 数値としての数量 (例:
15)
出力:
- 1行目:
Added [item_name] to inventory - 2行目:
Price: $[price] - 3行目:
Quantity: [quantity]
自分で試してみよう
use std::collections::HashMap;
use std::io;
fn main() {
// アイテム名を読み込む
let mut item_name = String::new();
io::stdin().read_line(&mut item_name).expect("Failed to read line");
let item_name = item_name.trim().to_string();
// 価格を読み込む
let mut price_input = String::new();
io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// 数量を読み込む
let mut quantity_input = String::new();
io::stdin().read_line(&mut quantity_input).expect("Failed to read line");
let quantity: i32 = quantity_input.trim().parse().expect("Failed to parse quantity");
// TODO: 以下にコードを記述してください
// 在庫を保存するためのHashMapを作成する
// アイテムを在庫に追加する
// 確認メッセージを表示する
}