roboplc-rpc 0.1.0

Fast and platform-independent JSON-RPC 2.0
Documentation
<h2>
  RoboPLC RPC - JSON RPC 2.0 minimalistic server and client
  <a href="https://crates.io/crates/atomic-timer"><img alt="crates.io page" src="https://img.shields.io/crates/v/atomic-timer.svg"></img></a>
  <a href="https://docs.rs/atomic-timer"><img alt="docs.rs page" src="https://docs.rs/atomic-timer/badge.svg"></img></a>
  <a href="https://github.com/roboplc/atomic-timer/actions/workflows/ci.yml">
    <img alt="GitHub Actions CI" src="https://github.com/roboplc/atomic-timer/actions/workflows/ci.yml/badge.svg"></img>
  </a>
</h2>

JSON RPC 2.0 server and client, part of [RoboPLC](https://www.roboplc.com)
project.

## Description

Ultra-lightweight JSON RPC 2.0 server and client library. Fully generic
implementation, no runtime dispatching, maximum performance and exhaustiveness.

Protocol-agnostic, can be used with any transport layer.

Note: batch requests are not supported as used pretty never in practice. In
case if you `really` need them, submit an issue/pull request.

## Canonical/minimalistic JSON-RPC 2.0

By default the crate works in a "minimalistic" mode:

* `jsonrpc` field is not required in the request/response, the version is never
  checked.

* `id`, `result` and `error` fields are renamed to `i`, `r` and `e` respectively.

The mode can be changed to JSON-RPC 2.0 canonical by enabling the `canonical`
feature.

## Features

* `std` - std support (enabled by default).
* `msgpack` - enables MessagePack serialization support.
* `http` - certain tools for HTTP transport (calls via HTTP GET, minimalistic responses).
* `canonical` - enable canonical JSON-RPC 2.0

## no-std

This library is `no_std` compatible. Use `--no-default-features` to disable `std` support.

Limitations:

* Request id can be `u32` only.
* Provides data types only, no client/server implementations.
* Error messages can be 128 bytes long only.


## MSRV

1.68.0