package streamable

  1. Overview
  2. Docs
A collection of types suitable for incremental serialization

Install

Dune Dependency

Authors

Maintainers

Sources

v0.16.1.tar.gz
md5=c410b847f5a0f0be3c67b3403af04282
sha512=62cdeea4d38110bc6bd318e564e8277355928156c947400ee3e023998b60009a9d20073e8f7efedbe3bbada739bea56c6ff7d1eaba26898f6675ab690f03aadb

doc/src/ppx_streamable/or_error_clause.ml.html

Source file or_error_clause.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
open! Base
open! Import

let type_parameter ~core_type =
  match core_type.ptyp_desc with
  | Ptyp_constr (longident_loc, [ type_parameter ]) ->
    (match
       Helpers.longident_is_like_t
         longident_loc.txt
         ~primitive_name:None
         ~first_module_name:"Or_error"
     with
     | false -> None
     | true  -> Some type_parameter)
  | _ -> None
;;

let maybe_match type_ { Ctx.version; _ } =
  let%bind core_type      = Type_.match_core_type type_ in
  let%map  type_parameter = type_parameter ~core_type  in
  ({ children =
       [ Core_type type_parameter
       ; Core_type
           (Helpers.core_type_with_atomic_attribute
              ~loc:(Type_.loc type_)
              ~module_dot_t:
                (match version with
                 | V1 -> "Core.Error.Stable.V2.t"))
       ]
   ; apply_functor =
       (fun ctx children ->
          Helpers.apply_streamable_dot ctx ~functor_name:"Of_result" ~arguments:children)
   }
   : Clause.Match.t)
;;
OCaml

Innovation. Community. Security.