1
MessagePack.FSharpExtensions
source link: https://www.nuget.org/packages/MessagePack.FSharpExtensions/3.0.0
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
MessagePack.FSharpExtensions
MessagePack.FSharpExtensions is a MessagePack-CSharp extension library for F#.
Usage
open System
open System.Buffers
open MessagePack
open MessagePack.Resolvers
open MessagePack.FSharp
[<MessagePackObject>]
type UnionSample =
| Foo of XYZ : int
| Bar of OPQ : string list
let convertAsMemory<'T> options (value: 'T) =
let memory = ReadOnlyMemory(MessagePackSerializer.Serialize(value, options))
MessagePackSerializer.Deserialize<'T>(memory, options)
let convertAsSequence<'T> options (value: 'T) =
let sequence = ReadOnlySequence(MessagePackSerializer.Serialize(value, options))
MessagePackSerializer.Deserialize<'T>(& sequence, options)
let dump = function
| Foo x ->
printfn "%d" x
| Bar xs ->
printfn "%A" xs
let resolver =
Resolvers.CompositeResolver.Create(
FSharpResolver.Instance,
StandardResolver.Instance
)
let options = MessagePackSerializerOptions.Standard.WithResolver(resolver)
Foo 999
|> convertAsMemory options
|> dump
Bar ["example"]
|> convertAsSequence options
|> dump
Supported types
- option
- voption
- Discriminated Union
- Struct Discriminated Union
Records, Struct Records and Anonymous Records are serialized and deserialized using DynamicObjectResolver
in MessagePack-CSharp
.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK