rustEnum static method

CustomLayout<Map<String, dynamic>, Map<String, dynamic>> rustEnum(
  1. List<Layout> variants, {
  2. Layout? discriminant,
  3. String? property,
  4. bool useKeyAndValue = true,
})

enum values

Implementation

static CustomLayout<Map<String, dynamic>, Map<String, dynamic>> rustEnum(
  List<Layout> variants, {
  Layout? discriminant,
  String? property,
  bool useKeyAndValue = true,
}) {
  final unionLayout = Union((discriminant != null) ? discriminant : u8());
  variants.asMap().forEach(
    (index, variant) => unionLayout.addVariant(
      variant: index,
      layout: variant,
      property: variant.property,
    ),
  );
  return CustomLayout<Map<String, dynamic>, Map<String, dynamic>>(
    layout: unionLayout,
    decoder: (value) {
      if (useKeyAndValue) {
        return {"key": value.keys.first, "value": value.values.first};
      }
      return value;
    },
    encoder: (src) {
      return src;
    },
    property: property,
  );
}