Command-Line Tools
Parse Argument
Convert Text to a Number
Command-line tools receive text arguments. A parser converts the text into typed values before the program uses them.
Program
Play the program to choose the raw limit argument, parse it, and print the typed value.
parse_limit_arg.rs
Replay: real traced execution (multi-file project)
fn main() {
let raw_limit = "3";
let args = ["egtry", "--limit", raw_limit];
let limit = parse_limit(&args);
println!("limit={limit}");
}
fn parse_limit(args: &[&str]) -> i32 {
args[2].parse::<i32>().unwrap()
}
fn main() {
let raw_limit = "5";
let args = ["egtry", "--limit", raw_limit];
let limit = parse_limit(&args);
println!("limit={limit}");
}
fn parse_limit(args: &[&str]) -> i32 {
args[2].parse::<i32>().unwrap()
}
fn main() {
let raw_limit = "8";
let args = ["egtry", "--limit", raw_limit];
let limit = parse_limit(&args);
println!("limit={limit}");
}
fn parse_limit(args: &[&str]) -> i32 {
args[2].parse::<i32>().unwrap()
}
raw_limit ← "3", args ← ["egtry", "--limit", "3"]
1fn main() {2 let raw_limi→ "3"t = "3"; //@raw_limit="3", "5", "8"3 let arg→ ["egtry", "--limit", "3"]s = ["egtry", "--limit", raw_limi"3"t];4 let limit = parse_limit(&arg["egtry", "--limit", "3"]s);5 println!("limit={limit}");fn parse_limit(args: &[&str]) -> i32
8fn parse_limit(args: &[&str]) -> i32 {9 args[2"3"].parse::<i32>().unwrap()10}limit ← 3
3 let args = ["egtry", "--limit", raw_limit];4 let limi→ 3t = parse_limit(&arg["egtry", "--limit", "3"]s);5 println!("limit={limit}");6}outputlimit=3
raw_limit ← "5", args ← ["egtry", "--limit", "5"]
1fn main() {2 let raw_limi→ "5"t = "5";3 let arg→ ["egtry", "--limit", "5"]s = ["egtry", "--limit", raw_limi"5"t];4 let limit = parse_limit(&arg["egtry", "--limit", "5"]s);5 println!("limit={limit}");fn parse_limit(args: &[&str]) -> i32
8fn parse_limit(args: &[&str]) -> i32 {9 args[2"5"].parse::<i32>().unwrap()10}limit ← 5
3 let args = ["egtry", "--limit", raw_limit];4 let limi→ 5t = parse_limit(&arg["egtry", "--limit", "5"]s);5 println!("limit={limit}");6}outputlimit=5
raw_limit ← "8", args ← ["egtry", "--limit", "8"]
1fn main() {2 let raw_limi→ "8"t = "8";3 let arg→ ["egtry", "--limit", "8"]s = ["egtry", "--limit", raw_limi"8"t];4 let limit = parse_limit(&arg["egtry", "--limit", "8"]s);5 println!("limit={limit}");fn parse_limit(args: &[&str]) -> i32
8fn parse_limit(args: &[&str]) -> i32 {9 args[2"8"].parse::<i32>().unwrap()10}limit ← 8
3 let args = ["egtry", "--limit", raw_limit];4 let limi→ 8t = parse_limit(&arg["egtry", "--limit", "8"]s);5 println!("limit={limit}");6}outputlimit=8
text input
Command-line arguments arrive as strings.
parse
`parse::<i32>()` converts the selected text into a number.
helper
`parse_limit` keeps argument extraction separate from the main flow.