# Conjure-Rust
[![CircleCI](https://circleci.com/gh/palantir/conjure-rust.svg?style=shield)](https://circleci.com/gh/palantir/conjure-rust) [![Bintray](https://img.shields.io/bintray/v/palantir/releases/conjure-rust.svg)](https://bintray.com/palantir/releases/conjure-rust/_latestVersion) [![License](https://img.shields.io/badge/License-Apache%202.0-lightgrey.svg)](https://opensource.org/licenses/Apache-2.0)
_[Conjure](https://github.com/palantir/conjure) support for Rust._
## conjure-rust
`conjure-rust` is an [RFC 002](
https://github.com/palantir/conjure/blob/master/docs/rfc/002-contract-for-conjure-generators.md)-compliant CLI, which can
be used via a build tool like [gradle-conjure](https://github.com/palantir/gradle-conjure), or manually:
```
USAGE:
conjure-rust generate [OPTIONS]
ARGS:
Path to a JSON-formatted Conjure IR file
Directory to place generated code
OPTIONS:
--exhaustive Generate exhaustively matchable enums and unions
--useStagedBuilders Generate compile-time safe builders to ensure all required
attributes are set
--stripPrefix Strip a prefix from types's package paths
--productName The name of the generated crate
--productVersion The version of the generated crate
-h, --help Print help information
```
## conjure-codegen
[Documentation](https://docs.rs/conjure-codegen)
`conjure-codegen` is the library which turns a Conjure IR file into Rust code. It powers the `conjure-rust` CLI, but
can also be used on its own in e.g. build scripts as an alternative approach. See its documentation for more details, as
well as examples of generated code.
## conjure-error
[Documentation](https://docs.rs/conjure-error)
`conjure-error` is the runtime support library that the errors generated by `conjure-codegen` depend on. It defines
various standard error types and functionality to serialize and deserialize errors.
## conjure-http
[Documentation](https://docs.rs/conjure-http)
`conjure-http` is the runtime support library that the service clients and resources generated by `conjure-codegen`
depend on. It defines interfaces used by the underlying client and server implementations.
## conjure-object
[Documentation](https://docs.rs/conjure-object)
`conjure-object` is the runtime support library that the objects generated by `conjure-codegen` depend on. It reexports
the various third party types that correspond to Conjure primitives.
## conjure-serde
[Documentation](https://docs.rs/conjure-serde)
`conjure-serde` provides wrapper types for serde `Serializer`s and `Deserializer`s which adjust behavior to match
Conjure's expectations around binary data, non-finite floating point values, and unknown fields.