fn replace_last_occurrence(s: &str, oldsub: &str, newsub: &str) -> String {
if let Some(pos) = s.rfind(oldsub) {
let mut result = String::with_capacity(s.len() - oldsub.len() + newsub.len());
result.push_str(&s[..pos]);
result.push_str(newsub);
result.push_str(&s[pos + oldsub.len()..]);
result
} else {
s.to_string()
}
}
fn main() {
let s = "Rust programming efficient programming reliable programming";
let old = "programming";
let new = "ABC";
let result = replace_last_occurrence(&s, &old, &new);
println!("{}", result);
}
/*
run:
Rust programming efficient programming reliable ABC
*/