I just want a space separated String
of the argument variables obtained from std::env::args()
, which I've been creating using the fold
function like this:
std::env::args() .fold("".to_string(), |accum, s| accum + &s + " ")
However this creates an extra space at the end which is unwanted. I tried using the truncate
function, but truncate
doesn't return a String
, just modifies the existing String
, and also this would require the creation of an intermediate binding in order to use the String
's len()
call to define how long the truncated String
should be (which itself would require an intermediate binding due to Rust's current lexical borrowing rules I believe!)
What's an idiomatic way to print all command line arguments in Rust?
fn main() { let mut args = std::env::args(); if let Some(arg) = args.next() { print!("{}", arg); for arg in args { print!(" {}", arg); } } }
Or better with Itertools' format
or format_with
:
use itertools::Itertools; // 0.8.0 fn main() { println!("{}", std::env::args().format(" ")); }
I just want a space separated
String
fn args() -> String { let mut result = String::new(); let mut args = std::env::args(); if let Some(arg) = args.next() { result.push_str(&arg); for arg in args { result.push(' '); result.push_str(&arg); } } result } fn main() { println!("{}", args()); }
Or
fn args() -> String { let mut result = std::env::args().fold(String::new(), |s, arg| s + &arg + " "); result.pop(); result } fn main() { println!("{}", args()); }
If you use Itertools, you can use the format
/ format_with
examples above with the format!
macro.
join
is also useful:
use itertools::Itertools; // 0.8.0 fn args() -> String { std::env::args().join(" ") } fn main() { println!("{}", args()); }
In other cases, you may want to use intersperse
:
use itertools::Itertools; // 0.8.0 fn args() -> String { std::env::args().intersperse(" ".to_string()).collect() } fn main() { println!("{}", args()); }
Note this isn't as efficient as other choices as a String
is cloned for each iteration.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With