Borrowing: References Are Not Plain Pointers
The previous article covered ownership: who owns, who frees.
Most functions do not want to take over a resource. They only want to inspect data temporarily, or mutate it temporarily. In C, this usually means passing a pointer:
void inspect(const uint8_t *buf, size_t len);
void update(uint8_t *buf, size_t len);
In Rust, this is borrowing:
fn inspect(buf: &[u8]) {}
fn update(buf: &mut [u8]) {}
Borrowing is not just “Rust pointer syntax.” It is access permission: temporarily read or write without taking ownership.
This article covers the first engineering meaning of &T and &mut T, without expanding lifetime annotations yet.