Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pocketberserker/messagepack.fsharpextensions
MessagePack Extensions for F#. / msgpack.org[F#]
https://github.com/pocketberserker/messagepack.fsharpextensions
fsharp messagepack msgpack serialization
Last synced: 2 months ago
JSON representation
MessagePack Extensions for F#. / msgpack.org[F#]
- Host: GitHub
- URL: https://github.com/pocketberserker/messagepack.fsharpextensions
- Owner: pocketberserker
- License: mit
- Created: 2017-03-14T02:36:11.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T19:32:51.000Z (4 months ago)
- Last Synced: 2024-11-30T14:46:47.546Z (2 months ago)
- Topics: fsharp, messagepack, msgpack, serialization
- Language: C#
- Homepage:
- Size: 113 KB
- Stars: 43
- Watchers: 1
- Forks: 7
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MessagePack.FSharpExtensions
[![NuGet Status](http://img.shields.io/nuget/v/MessagePack.FSharpExtensions.svg?style=flat)](https://www.nuget.org/packages/MessagePack.FSharpExtensions/)MessagePack.FSharpExtensions is a [MessagePack-CSharp](https://github.com/neuecc/MessagePack-CSharp) extension library for F#.
## Usage
```fsharp
open System
open System.Buffers
open MessagePack
open MessagePack.Resolvers
open MessagePack.FSharp[]
type UnionSample =
| Foo of XYZ : int
| Bar of OPQ : string listlet 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" xslet resolver =
Resolvers.CompositeResolver.Create(
FSharpResolver.Instance,
StandardResolver.Instance
)let options = MessagePackSerializerOptions.Standard.WithResolver(resolver)
Foo 999
|> convertAsMemory options
|> dumpBar ["example"]
|> convertAsSequence options
|> dump
```## Supported types
- option
- voption
- list
- map
- set
- Discriminated Union
- Struct Discriminated UnionRecords, Struct Records and Anonymous Records are serialized and deserialized using `DynamicObjectResolver` in `MessagePack-CSharp`.