Content:
- Function, no args, calling it.
- One string argument, default move, not usable any more after move.
- Immutable ref, can have multiple.
- Mutable ref, can only have one.
- Return values, default move.
- Cannot return reference -> life time tracking.
fn f() {
println!("Hello from f");
}
fn main() {
println!("Hello world!");
f();
}
fn f(s: String) {
println!("Hello from f {}", s);
}
fn main() {
println!("Hello world!");
let st : String = "abc".to_string();
f(st);
}
fn f(s: &String) {
println!("Hello from f {}", s);
}
fn main() {
println!("Hello world!");
let st : String = "abc".to_string();
f(&st);
println!("Value: {}", st);
}
fn f(s: &mut String) {
println!("Hello from f {}", s);
s.push_str("xyz");
}
fn main() {
println!("Hello world!");
let mut st : String = "abc".to_string();
f(&mut st);
println!("Value: {}", st);
}
fn f(s: &mut String) {
println!("Hello from f {}", s);
s.push_str("xyz");
}
fn main() {
println!("Hello world!");
let mut st : String = "abc".to_string();
f(&mut st);
let a : &String = &st;
let b : &String = &st;
println!("Value: {} {} {}", st, a, b);
}
fn f(s: &mut String) {
println!("Hello from f {}", s);
s.push_str("xyz");
}
fn main() {
println!("Hello world!");
let mut st : String = "abc".to_string();
f(&mut st);
let a : &String = &st;
println!("Value: {}", a);
let b : &mut String = &mut st;
println!("Value: {}", b);
}
fn f(s: &mut String) -> String {
println!("Hello from f {}", s);
s.push_str("xyz");
s.clone() + "abc"
}
fn main() {
println!("Hello world!");
let mut st : String = "abc".to_string();
let t = f(&mut st);
println!("Value: {} {}", st, t);
}