tango-client 0.4.1

Client for the Tango control system.
Documentation
# tango-rs

This library is a client for [Tango control system](https://tango-controls.org)
servers.  It uses the preexisting C bindings (included) and wraps the API
functions provided by it in a Rustic interface.

Device proxy API calls:

* `command_inout`
* `command_query`
* `command_list_query`
* `get_attribute_list`
* `get_attribute_config`
* `attribute_list_query`
* `read/write_attribute`
* `read/write_attributes`
* `get/put/delete_device_property`
* `get/set_timeout`
* `get/set_source`
* `lock/unlock/is_locked`


Database API calls:

* `get_device_exported/_for_class`
* `get_object_list`
* `get_object_property_list`
* `get/put/delete_property`

## Building

You need an installed Tango library with headers.  Set the `PKG_CONFIG_PATH`
environment variable to the directory that contains `tango.pc` if it is not
found by default.

## Minimal supported Rust version

The crate is tested down to Rust 1.41.1.

## Serde integration

When the feature `serde` is activated, the `CommandData`, `AttrValue` and
`PropertyValue` types can be serialized and deserialized with serde.  This
allows quickly converting them from/to JSON, for example.

## Testing

For testing/benchmarking, you need a Tango database running on
`localhost:10000`, and the default instance of the standard testing server
(`TangoTest/test`).

Then, you can run `cargo test` to test all wrapped APIs, and `cargo bench` to
measure the duration of `command_inout` roundtrips.