# Ownership --- # Copying ## Assignment # Moving ## Assignment is not allowed for movable types that are not shared ## To And From Functions # Passing ## References References are automatically taken if the function signature specifies ref ```text inc_push_to_ref : ([`ref x; y] x `push y + 1 ) int_array : Array[I64] $ () float_array : Array[F64] $ () @ 0 .. 2 {[x] inc_push_to_ref `sync (int_array, x) inc_push_to_ref `sync (float_array, F64 $ x) } `log int_array // Array[I64] $ (1; 2; 3) `log float_array // Array[F64] $ (1.0; 2.0; 3.0) ``` # Shared Types # Locking Prevent modification until a mutation occurs ## References # Mutating Unlock a lock or shared target and prevents modification to everything except the lock target