05. Alcance real del borrow checker
Bagron tiene comprobaciones de ownership y préstamos, pero no un borrow checker general con el modelo completo de Rust. Actualmente las reglas se concentran en:
- estados
owned,borrowed,deadycloseddebufferyopaque; - consumo explícito con
Dely operacionesclose_*; - exclusividad demostrable de parámetros
uniquemedianteRegion_t; - procedencia y seguridad de punteros en la frontera
@unsafe.
Por ejemplo, pasar un buffer a una función ordinaria no transfiere su
ownership:
func inspect(data: buffer[], length: Len_t) void:
return
func use(data: buffer[4]) void:
inspect(data, 4)
data[0] = 1
El llamador conserva el buffer. No dependas de estas reglas para hacer seguro
un puntero crudo: los punteros pueden aliasar y no llevan longitud. Para esos
casos usa una frontera @unsafe y documenta la garantía que debe cumplir el
llamador.