diff options
Diffstat (limited to 'intl/icu_capi/src/lib.rs')
-rw-r--r-- | intl/icu_capi/src/lib.rs | 145 |
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; |