use std::error::Error;
fn move_nth_word_to_end_of_string(input: &str, n: usize) -> Result<String, Box<dyn Error>> {
let trimmed = input.trim();
if trimmed.is_empty() {
return Ok(trimmed.to_string());
}
let mut parts: Vec<&str> = trimmed.split_whitespace().collect();
if n >= parts.len() {
return Err("index out of range".into());
}
let word = parts.remove(n);
parts.push(word);
Ok(parts.join(" "))
}
fn main() -> Result<(), Box<dyn Error>> {
let s = "Would you like to know more? (Explore and learn)";
let n = 2;
let result = move_nth_word_to_end_of_string(s, n)?;
println!("{}", result);
Ok(())
}
/*
run:
Would you to know more? (Explore and learn) like
*/