| // Protocol Buffers - Google's data interchange format |
| // Copyright 2023 Google LLC. All rights reserved. |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| |
| //! Rust Protobuf Runtime |
| //! |
| //! This file exists as the public entry point for the Rust Protobuf runtime. It |
| //! is a thin re-export of the `shared.rs` file but is needed for two reasons: |
| //! - To create a single `protobuf` crate name for either cpp and upb kernels |
| //! from user code (toggled at compile time). |
| //! - Blocks the __internal and __runtime modules from being re-exported to |
| //! application code, unless they use one of our visibility-restricted targets |
| //! (gencode does have access to them). |
| |
| #[cfg(cpp_kernel)] |
| use protobuf_cpp as kernel; |
| |
| #[cfg(upb_kernel)] |
| use protobuf_upb as kernel; |
| |
| /// Block these two mods from being re-exported by the `pub use` |
| /// below (glob use automatically only adds things that aren't otherwise |
| /// defined). |
| /// |
| /// By creating a const instead of an empty mod it is easier to have a test |
| /// that confirms this targeted 'blocking' is working as intended. |
| #[doc(hidden)] |
| #[allow(non_upper_case_globals)] |
| pub const __internal: () = (); |
| |
| #[doc(hidden)] |
| #[allow(non_upper_case_globals)] |
| pub const __runtime: () = (); |
| |
| pub use kernel::*; |