datafusion_proto_models/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#![doc(
19 html_logo_url = "https://raw.githubusercontent.com/apache/datafusion/19fe44cf2f30cbdd63d4a4f52c74055163c6cc38/docs/logos/standalone_logo/logo_original.svg",
20 html_favicon_url = "https://raw.githubusercontent.com/apache/datafusion/19fe44cf2f30cbdd63d4a4f52c74055163c6cc38/docs/logos/standalone_logo/logo_original.svg"
21)]
22#![cfg_attr(docsrs, feature(doc_cfg))]
23// Make sure fast / cheap clones on Arc are explicit:
24// https://github.com/apache/datafusion/issues/11143
25#![deny(clippy::clone_on_ref_ptr)]
26
27//! `prost`-generated DataFusion protobuf model types.
28//!
29//! This crate contains the generated structs for DataFusion's logical and
30//! physical plan protobuf schemas (see `proto/datafusion.proto`), plus the
31//! [`From`] / [`TryFrom`] conversions between them and the `datafusion-common`
32//! types they mirror. Those conversions live here because their DataFusion side
33//! sits *below* this crate in the dependency graph and so cannot host the impls
34//! itself — see [`from_proto`] and [`to_proto`]. It is the schema source of
35//! truth for [`datafusion-proto`].
36//!
37//! Most users should depend on [`datafusion-proto`] instead, which re-exports
38//! these types under [`datafusion_proto::protobuf`].
39//!
40//! [`datafusion-proto`]: https://crates.io/crates/datafusion-proto
41//! [`datafusion-proto-common`]: https://crates.io/crates/datafusion-proto-common
42//! [`datafusion_proto::protobuf`]: https://docs.rs/datafusion-proto/latest/datafusion_proto/protobuf/index.html
43
44pub mod from_proto;
45pub mod generated;
46pub mod to_proto;
47
48/// All DataFusion protobuf model types.
49///
50/// Includes both the types declared in `datafusion.proto` and the
51/// `datafusion_proto_common` types it imports, in a single flat namespace
52/// so consumers can `use datafusion_proto_models::protobuf::*;`.
53pub mod protobuf {
54 pub use crate::generated::datafusion::*;
55}
56
57/// Re-export of the `datafusion_proto_common` types as exposed through this
58/// crate's generated module, for callers that want the common-only namespace.
59pub use generated::datafusion_common;