Borrows without lifetime annotations
Rust enforces memory safety with a borrow checker plus explicit lifetime parameters ('a, 'static) once references cross function boundaries. Glide enforces the same use-after-free and aliased-mutation rules, but the lifetimes are inferred from scope alone — you never write 'a. The mental cost of "fighting the borrow checker" is significantly lower, at the price of slightly less expressive borrow patterns (no self-referential structs without an arena).
fn first_word(s: &string) -> &string {
return s.split(" ").get(0);
} // no lifetime params
fn first_word<'a>(s: &'a str) -> &'a str {
s.split(' ').next().unwrap()
} // explicit 'a