Layout_common.Fields_shapeWe use a custom type for the member offsets for layouts; this allows us to use a more efficient representation for arrays T; N, that doesn't require N offsets.
type t = | PrimitiveNo fields present
*)| Arbitrary of Charon.Types.variant_id
* Soteria_rust_lib.Typed.T.sint Typed.t Stdlib.Array.tArbitrary field placement (structs, unions...), with the variant (e.g. enums with a single inhabited variant)
*)| Enum of Tag_layout.t * t Stdlib.Array.tEnum fields: encodes a tag, and an array of field shapes for each variant (indexed by variant ID). Using offset_of on this isn't valid; one must first retrieve the fields shape of the corresponding variant.
| Array of Soteria_rust_lib.Typed.T.sint Typed.tAll fields are equally spaced (arrays, slices)
*)val pp : t Fmt.tval offset_of : int -> t -> Soteria_rust_lib.Typed.T.sint Typed.tval iter_vars : t -> ((Soteria.Symex.Var.t * 'a Typed.ty) -> unit) -> unit