fbthrift_git/
lib.rs

1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#![recursion_limit = "1024"]
18#![deny(warnings)]
19
20macro_rules! bail_err {
21    ($e:expr) => {
22        return Err(From::from($e))
23    };
24}
25
26macro_rules! ensure_err {
27    ($cond:expr, $e:expr) => {
28        if !$cond {
29            bail_err!($e);
30        }
31    };
32}
33
34use anyhow::Result;
35
36#[macro_use]
37pub mod protocol;
38
39pub mod adapter;
40pub mod application_exception;
41pub mod binary_protocol;
42pub mod binary_type;
43pub mod builtin_types;
44pub mod compact_protocol;
45pub mod context_stack;
46pub mod deserialize;
47pub mod export;
48pub mod framing;
49pub mod metadata;
50pub mod processor;
51pub mod request_context;
52pub mod serialize;
53pub mod simplejson_protocol;
54pub mod thrift_protocol;
55pub mod ttype;
56pub mod uri;
57
58mod bufext;
59mod client;
60mod errors;
61mod exceptions;
62mod varint;
63
64#[cfg(test)]
65mod tests;
66
67#[doc(hidden)]
68pub mod help;
69
70pub mod types {
71    // Define ApplicationException as if it were a normal generated type to make things simpler
72    // for codegen.
73    pub use crate::application_exception::ApplicationException;
74}
75
76pub use crate::application_exception::ApplicationException;
77pub use crate::application_exception::ApplicationExceptionErrorCode;
78pub use crate::binary_protocol::BinaryProtocol;
79pub use crate::bufext::BufExt;
80pub use crate::bufext::BufMutExt;
81pub use crate::bufext::DeserializeSource;
82pub use crate::client::ClientFactory;
83pub use crate::client::ClientStreamElement;
84pub use crate::client::Transport;
85pub use crate::compact_protocol::CompactProtocol;
86pub use crate::context_stack::ContextStack;
87pub use crate::context_stack::DummyContextStack;
88pub use crate::context_stack::SerializedMessage;
89pub use crate::deserialize::Deserialize;
90pub use crate::errors::NonthrowingFunctionError;
91pub use crate::errors::ProtocolError;
92pub use crate::exceptions::ExceptionInfo;
93pub use crate::exceptions::ResultInfo;
94pub use crate::exceptions::ResultType;
95pub use crate::framing::Framing;
96pub use crate::framing::FramingDecoded;
97pub use crate::framing::FramingEncoded;
98pub use crate::framing::FramingEncodedFinal;
99pub use crate::help::NoopSpawner;
100pub use crate::processor::NullServiceProcessor;
101pub use crate::processor::ReplyState;
102pub use crate::processor::SerializedStreamElement;
103pub use crate::processor::ServiceProcessor;
104pub use crate::processor::ThriftService;
105pub use crate::protocol::Field;
106pub use crate::protocol::Protocol;
107pub use crate::protocol::ProtocolDecoded;
108pub use crate::protocol::ProtocolEncoded;
109pub use crate::protocol::ProtocolEncodedFinal;
110pub use crate::protocol::ProtocolReader;
111pub use crate::protocol::ProtocolWriter;
112pub use crate::request_context::DummyRequestContext;
113pub use crate::request_context::RequestContext;
114pub use crate::serialize::Serialize;
115pub use crate::simplejson_protocol::SimpleJsonProtocol;
116pub use crate::thrift_protocol::MessageType;
117pub use crate::thrift_protocol::ProtocolID;
118pub use crate::ttype::GetTType;
119pub use crate::ttype::TType;
120pub use crate::uri::GetUri;
121
122pub trait ThriftEnum: Sized {
123    fn enumerate() -> &'static [(Self, &'static str)];
124
125    fn variants() -> &'static [&'static str];
126
127    fn variant_values() -> &'static [Self];
128}