def swap_checked_at

bend-collections@1.0.0.0 · src/containers/dynamic_array.bend:680

import bend-collections@1.0.0.0/src/containers/dynamic_array.bend as DynamicArray
import Base
import bend-collections@1.0.0.0/src/containers/types/dynamic_array.bend as E

680# Copyable-element exchange, used by indexed collection storage. The previous
681# value is returned and all other slots remain unchanged. Like set_at, an
682# invalid index leaves the array unchanged and reports IndexOutOfRange.
683def swap_checked_at(~T: Data, limit: Nat, depth: Nat, cap: Nat, len: Nat, arr: Array<Maybe<&2, T>>, i: Nat, v: T, ok: Bool) -> DynArray<&2, T> & Result<&2, &2, E.Error, T>:
684  match ok:
685    case True{}:
686      get_found_at(~T, limit, depth, cap, len, Array.swap(Maybe<&2, T>, arr, U32.from_nat(i), Some{v}))
687    case False{}:
688      (DA{limit, depth, cap, len, arr}, Fail{E.IndexOutOfRange{}})

Uses (12)

Used by (1)