diff options
author | Allen George <allen.george@gmail.com> | 2016-11-02 08:01:08 -0400 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2017-01-26 01:34:16 +0100 |
commit | 8b96bfbf1eb058d3c378535e90c1e90280224bb4 (patch) | |
tree | 9b7719c1bb205f7132f4b1870f974c6ceb7f0bac /lib/rs/src/lib.rs | |
parent | 6fe7fa1b7ed72215a59e93c680a209a99530fada (diff) | |
download | thrift-8b96bfbf1eb058d3c378535e90c1e90280224bb4.tar.gz |
THRIFT-2945 Add Rust support
Client: Rust
Patch: Allen George <allen.george@gmail.com>
This closes #1147
Diffstat (limited to 'lib/rs/src/lib.rs')
-rw-r--r-- | lib/rs/src/lib.rs | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/lib/rs/src/lib.rs b/lib/rs/src/lib.rs new file mode 100644 index 000000000..ad1872146 --- /dev/null +++ b/lib/rs/src/lib.rs @@ -0,0 +1,87 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//! Rust runtime library for the Apache Thrift RPC system. +//! +//! This crate implements the components required to build a working +//! Thrift server and client. It is divided into the following modules: +//! +//! 1. errors +//! 2. protocol +//! 3. transport +//! 4. server +//! 5. autogen +//! +//! The modules are layered as shown in the diagram below. The `generated` +//! layer is generated by the Thrift compiler's Rust plugin. It uses the +//! types and functions defined in this crate to serialize and deserialize +//! messages and implement RPC. Users interact with these types and services +//! by writing their own code on top. +//! +//! ```text +//! +-----------+ +//! | user app | +//! +-----------+ +//! | autogen'd | (uses errors, autogen) +//! +-----------+ +//! | protocol | +//! +-----------+ +//! | transport | +//! +-----------+ +//! ``` + +#![crate_type = "lib"] +#![doc(test(attr(allow(unused_variables), deny(warnings))))] + +extern crate byteorder; +extern crate integer_encoding; +extern crate try_from; + +#[macro_use] +extern crate log; + +// NOTE: this macro has to be defined before any modules. See: +// https://danielkeep.github.io/quick-intro-to-macros.html#some-more-gotchas + +/// Assert that an expression returning a `Result` is a success. If it is, +/// return the value contained in the result, i.e. `expr.unwrap()`. +#[cfg(test)] +macro_rules! assert_success { + ($e: expr) => { + { + let res = $e; + assert!(res.is_ok()); + res.unwrap() + } + } +} + +pub mod protocol; +pub mod server; +pub mod transport; + +mod errors; +pub use errors::*; + +mod autogen; +pub use autogen::*; + +/// Result type returned by all runtime library functions. +/// +/// As is convention this is a typedef of `std::result::Result` +/// with `E` defined as the `thrift::Error` type. +pub type Result<T> = std::result::Result<T, self::Error>; |