mirror of
https://github.com/ahgamut/rust-ape-example.git
synced 2024-05-29 00:38:05 +00:00
34 lines
784 B
Rust
34 lines
784 B
Rust
|
// ./src/scope/lifetime/elision.md
|
||
|
|
||
|
|
||
|
// `elided_input` and `annotated_input` essentially have identical signatures
|
||
|
// because the lifetime of `elided_input` is inferred by the compiler:
|
||
|
fn elided_input(x: &i32) {
|
||
|
println!("`elided_input`: {}", x);
|
||
|
}
|
||
|
|
||
|
fn annotated_input<'a>(x: &'a i32) {
|
||
|
println!("`annotated_input`: {}", x);
|
||
|
}
|
||
|
|
||
|
// Similarly, `elided_pass` and `annotated_pass` have identical signatures
|
||
|
// because the lifetime is added implicitly to `elided_pass`:
|
||
|
fn elided_pass(x: &i32) -> &i32 { x }
|
||
|
|
||
|
fn annotated_pass<'a>(x: &'a i32) -> &'a i32 { x }
|
||
|
|
||
|
fn part0() {
|
||
|
let x = 3;
|
||
|
|
||
|
elided_input(&x);
|
||
|
annotated_input(&x);
|
||
|
|
||
|
println!("`elided_pass`: {}", elided_pass(&x));
|
||
|
println!("`annotated_pass`: {}", annotated_pass(&x));
|
||
|
}
|
||
|
|
||
|
pub fn main() {
|
||
|
part0();
|
||
|
}
|
||
|
|