summaryrefslogtreecommitdiffstats
path: root/intl/icu_capi/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'intl/icu_capi/src/lib.rs')
-rw-r--r--intl/icu_capi/src/lib.rs145
1 files changed, 145 insertions, 0 deletions
diff --git a/intl/icu_capi/src/lib.rs b/intl/icu_capi/src/lib.rs
new file mode 100644
index 0000000000..74060998bc
--- /dev/null
+++ b/intl/icu_capi/src/lib.rs
@@ -0,0 +1,145 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// https://github.com/unicode-org/icu4x/blob/main/docs/process/boilerplate.md#library-annotations
+#![no_std]
+#![cfg_attr(
+ not(test),
+ deny(
+ clippy::indexing_slicing,
+ clippy::unwrap_used,
+ clippy::expect_used,
+ clippy::panic,
+ // Exhaustiveness and Debug is not required for Diplomat types
+ )
+)]
+#![allow(clippy::upper_case_acronyms)]
+#![allow(clippy::needless_lifetimes)]
+#![allow(clippy::result_unit_err)]
+
+//! This crate contains the source of truth for the [Diplomat](https://github.com/rust-diplomat/diplomat)-generated
+//! FFI bindings. This generates the C, C++, JavaScript, and TypeScript bindings. This crate also contains the `extern "C"`
+//! FFI for ICU4X.
+//!
+//! While the types in this crate are public, APIs from this crate are *not intended to be used from Rust*
+//! and as such this crate may unpredictably change its Rust API across compatible semver versions. The `extern "C"` APIs exposed
+//! by this crate, while not directly documented, are stable within the same major semver version, as are the bindings exposed under
+//! the `cpp/` and `js/` folders.
+//!
+//! This crate may still be explored for documentation on docs.rs, and there are generated language-specific docs available as well.
+//! C++ has sphinx docs in `cpp/docs/`, and the header files also contain documentation comments. The JS version has sphinx docs under
+//! `js/docs`, and the TypeScript sources in `js/include` are compatible with `tsdoc`.
+//!
+//! This crate is `no_std` and will not typically build as a staticlib on its own. If you wish to link to it you should prefer
+//! using `icu_capi_staticlib`, or for more esoteric platforms you may write a shim crate depending on this crate that hooks in
+//! an allocator and panic hook.
+//!
+//! More information on using ICU4X from C++ can be found in [our tutorial].
+//!
+//! [our tutorial]: https://github.com/unicode-org/icu4x/blob/main/docs/tutorials/cpp.md
+// Renamed so you can't accidentally use it
+#[cfg(target_arch = "wasm32")]
+extern crate std as rust_std;
+
+extern crate alloc;
+
+// Common modules
+
+pub mod common;
+pub mod data_struct;
+pub mod errors;
+pub mod locale;
+#[cfg(feature = "logging")]
+pub mod logging;
+#[macro_use]
+pub mod provider;
+
+// Components
+
+#[cfg(feature = "icu_properties")]
+pub mod bidi;
+#[cfg(any(
+ feature = "icu_datetime",
+ feature = "icu_timezone",
+ feature = "icu_calendar"
+))]
+pub mod calendar;
+#[cfg(feature = "icu_casemap")]
+pub mod casemap;
+#[cfg(feature = "icu_collator")]
+pub mod collator;
+#[cfg(feature = "icu_properties")]
+pub mod collections_sets;
+#[cfg(any(
+ feature = "icu_datetime",
+ feature = "icu_timezone",
+ feature = "icu_calendar"
+))]
+pub mod date;
+#[cfg(any(
+ feature = "icu_datetime",
+ feature = "icu_timezone",
+ feature = "icu_calendar"
+))]
+pub mod datetime;
+#[cfg(feature = "icu_datetime")]
+pub mod datetime_formatter;
+#[cfg(feature = "icu_decimal")]
+pub mod decimal;
+#[cfg(feature = "icu_displaynames")]
+pub mod displaynames;
+#[cfg(feature = "icu_locid_transform")]
+pub mod fallbacker;
+#[cfg(feature = "icu_decimal")]
+pub mod fixed_decimal;
+#[cfg(any(feature = "icu_datetime", feature = "icu_timezone"))]
+pub mod iana_bcp47_mapper;
+#[cfg(feature = "icu_list")]
+pub mod list;
+#[cfg(feature = "icu_locid_transform")]
+pub mod locale_directionality;
+#[cfg(feature = "icu_locid_transform")]
+pub mod locid_transform;
+#[cfg(feature = "icu_timezone")]
+pub mod metazone_calculator;
+#[cfg(feature = "icu_normalizer")]
+pub mod normalizer;
+#[cfg(feature = "icu_normalizer")]
+pub mod normalizer_properties;
+#[cfg(feature = "icu_plurals")]
+pub mod pluralrules;
+#[cfg(feature = "icu_properties")]
+pub mod properties_iter;
+#[cfg(feature = "icu_properties")]
+pub mod properties_maps;
+#[cfg(feature = "icu_properties")]
+pub mod properties_names;
+#[cfg(feature = "icu_properties")]
+pub mod properties_sets;
+#[cfg(feature = "icu_properties")]
+pub mod properties_unisets;
+#[cfg(feature = "icu_properties")]
+pub mod script;
+#[cfg(feature = "icu_segmenter")]
+pub mod segmenter_grapheme;
+#[cfg(feature = "icu_segmenter")]
+pub mod segmenter_line;
+#[cfg(feature = "icu_segmenter")]
+pub mod segmenter_sentence;
+#[cfg(feature = "icu_segmenter")]
+pub mod segmenter_word;
+#[cfg(any(
+ feature = "icu_datetime",
+ feature = "icu_timezone",
+ feature = "icu_calendar"
+))]
+pub mod time;
+#[cfg(any(feature = "icu_datetime", feature = "icu_timezone"))]
+pub mod timezone;
+#[cfg(feature = "icu_datetime")]
+pub mod timezone_formatter;
+#[cfg(feature = "icu_calendar")]
+pub mod week;
+#[cfg(feature = "icu_datetime")]
+pub mod zoned_formatter;