def read.opt

bendonnect-rpc@0.1.0.0 · src/pbjson.bend:603

import bendonnect-rpc@0.1.0.0/src/pbjson.bend as Pbjson
import Base
import bend-kit-json@0.6.1.1/json.bend as Json

603# Presence-aware read for optional scalars, oneof members and singular messages:
604# null/absent -> None, otherwise Some(read(v)).
605def read.opt(~T: Data, ~read: Json.Val -> Result<&2, &1, String, T>, v: Json.Val) -> Result<&2, &1, String, Maybe<&2, T>>:
606  match v:
607    case Json.Null{}:
608      Done{None{}}
609    case Json.Flag{on}:
610      opt.some(~T, ~read, Json.Flag{on})
611    case Json.Num{s}:
612      opt.some(~T, ~read, Json.Num{s})
613    case Json.Str{s}:
614      opt.some(~T, ~read, Json.Str{s})
615    case Json.Arr{xs}:
616      opt.some(~T, ~read, Json.Arr{xs})
617    case Json.Obj{kvs}:
618      opt.some(~T, ~read, Json.Obj{kvs})

Uses (5)

Used by (0)

No other definition uses this definition.