You probably wouldn’t be committing this, unless you’re backing up a heavily WIP branch. The issue is that if you’re developing locally and need to make a temporary change, you might comment something out, which then requires commenting another now-unused variable, which then requires commenting out yet another variable, and so on. Go isn’t helping you here, it’s wasting your time for no good reason. Just emit a warning and allow CI to be configured to reject warnings.
The
collect
’s in the middle aren’t necessary, neither is splitting by": "
. Here’s a simpler versionfn main() { let text = "seeds: 79 14 55 13\nwhatever"; let seeds: Vec<_> = text .lines() .next() .unwrap() .split_whitespace() .skip(1) .map(|x| x.parse::<u32>().unwrap()) .collect(); println!("seeds: {:?}", seeds); }
It is simpler to bang out a
[int(num) for num in text.splitlines()[0].split(' ')[1:]]
in Python, but that just shows the happy path with no error handling, and does a bunch of allocations that the Rust version doesn’t. You can also get slightly fancier in the Rust version by collecting into aResult
for more succinct error handling if you’d like.EDIT: Here’s also a version using
anyhow
for error handling, and the aforementionedResult
collecting:use anyhow::{anyhow, Result}; fn main() -> Result<()> { let text = "seeds: 79 14 55 13\nwhatever"; let seeds: Vec<u32> = text .lines() .next() .ok_or(anyhow!("No first line!"))? .split_whitespace() .skip(1) .map(str::parse) .collect::<Result<_, _>>()?; println!("seeds: {:?}", seeds); Ok(()) }