]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/thrift/lib/rs/src/lib.rs
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / thrift / lib / rs / src / lib.rs
1 // Licensed to the Apache Software Foundation (ASF) under one
2 // or more contributor license agreements. See the NOTICE file
3 // distributed with this work for additional information
4 // regarding copyright ownership. The ASF licenses this file
5 // to you under the Apache License, Version 2.0 (the
6 // "License"); you may not use this file except in compliance
7 // with the License. You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing,
12 // software distributed under the License is distributed on an
13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 // KIND, either express or implied. See the License for the
15 // specific language governing permissions and limitations
16 // under the License.
17
18 //! Rust runtime library for the Apache Thrift RPC system.
19 //!
20 //! This crate implements the components required to build a working
21 //! Thrift server and client. It is divided into the following modules:
22 //!
23 //! 1. errors
24 //! 2. protocol
25 //! 3. transport
26 //! 4. server
27 //! 5. autogen
28 //!
29 //! The modules are layered as shown in the diagram below. The `autogen'd`
30 //! layer is generated by the Thrift compiler's Rust plugin. It uses the
31 //! types and functions defined in this crate to serialize and deserialize
32 //! messages and implement RPC. Users interact with these types and services
33 //! by writing their own code that uses the auto-generated clients and
34 //! servers.
35 //!
36 //! ```text
37 //! +-----------+
38 //! | user app |
39 //! +-----------+
40 //! | autogen'd | (uses errors, autogen)
41 //! +-----------+
42 //! | protocol |
43 //! +-----------+
44 //! | transport |
45 //! +-----------+
46 //! ```
47
48 #![crate_type = "lib"]
49 #![doc(test(attr(allow(unused_variables), deny(warnings))))]
50 #![deny(bare_trait_objects)]
51
52 extern crate byteorder;
53 extern crate ordered_float;
54 extern crate integer_encoding;
55 extern crate threadpool;
56
57 #[macro_use]
58 extern crate log;
59
60 // NOTE: this macro has to be defined before any modules. See:
61 // https://danielkeep.github.io/quick-intro-to-macros.html#some-more-gotchas
62
63 /// Assert that an expression returning a `Result` is a success. If it is,
64 /// return the value contained in the result, i.e. `expr.unwrap()`.
65 #[cfg(test)]
66 macro_rules! assert_success {
67 ($e: expr) => {{
68 let res = $e;
69 assert!(res.is_ok());
70 res.unwrap()
71 }};
72 }
73
74 pub mod protocol;
75 pub mod server;
76 pub mod transport;
77
78 mod errors;
79 pub use errors::*;
80
81 mod autogen;
82 pub use autogen::*;
83
84 /// Result type returned by all runtime library functions.
85 ///
86 /// As is convention this is a typedef of `std::result::Result`
87 /// with `E` defined as the `thrift::Error` type.
88 pub type Result<T> = std::result::Result<T, self::Error>;
89
90 // Re-export ordered-float, since it is used by the generator
91 pub use ordered_float::OrderedFloat as OrderedFloat;