summaryrefslogtreecommitdiffstats
path: root/intl/icu_capi/cpp/docs/source
diff options
context:
space:
mode:
Diffstat (limited to 'intl/icu_capi/cpp/docs/source')
-rw-r--r--intl/icu_capi/cpp/docs/source/bidi_ffi.rst194
-rw-r--r--intl/icu_capi/cpp/docs/source/calendar_ffi.rst157
-rw-r--r--intl/icu_capi/cpp/docs/source/casemap_ffi.rst238
-rw-r--r--intl/icu_capi/cpp/docs/source/collator_ffi.rst147
-rw-r--r--intl/icu_capi/cpp/docs/source/collections_sets_ffi.rst143
-rw-r--r--intl/icu_capi/cpp/docs/source/common_ffi.rst13
-rw-r--r--intl/icu_capi/cpp/docs/source/conf.py60
-rw-r--r--intl/icu_capi/cpp/docs/source/data_struct_ffi.rst18
-rw-r--r--intl/icu_capi/cpp/docs/source/date_ffi.rst264
-rw-r--r--intl/icu_capi/cpp/docs/source/datetime_ffi.rst351
-rw-r--r--intl/icu_capi/cpp/docs/source/datetime_formatter_ffi.rst278
-rw-r--r--intl/icu_capi/cpp/docs/source/decimal_ffi.rst50
-rw-r--r--intl/icu_capi/cpp/docs/source/displaynames_ffi.rst107
-rw-r--r--intl/icu_capi/cpp/docs/source/errors_ffi.rst136
-rw-r--r--intl/icu_capi/cpp/docs/source/fallbacker_ffi.rst117
-rw-r--r--intl/icu_capi/cpp/docs/source/fixed_decimal_ffi.rst287
-rw-r--r--intl/icu_capi/cpp/docs/source/iana_bcp47_mapper_ffi.rst42
-rw-r--r--intl/icu_capi/cpp/docs/source/index.rst54
-rw-r--r--intl/icu_capi/cpp/docs/source/list_ffi.rst76
-rw-r--r--intl/icu_capi/cpp/docs/source/locale_directionality_ffi.rst47
-rw-r--r--intl/icu_capi/cpp/docs/source/locale_ffi.rst179
-rw-r--r--intl/icu_capi/cpp/docs/source/locid_transform_ffi.rst76
-rw-r--r--intl/icu_capi/cpp/docs/source/logging_ffi.rst21
-rw-r--r--intl/icu_capi/cpp/docs/source/metazone_calculator_ffi.rst16
-rw-r--r--intl/icu_capi/cpp/docs/source/normalizer_ffi.rst94
-rw-r--r--intl/icu_capi/cpp/docs/source/normalizer_properties_ffi.rst87
-rw-r--r--intl/icu_capi/cpp/docs/source/pluralrules_ffi.rst96
-rw-r--r--intl/icu_capi/cpp/docs/source/properties_iter_ffi.rst27
-rw-r--r--intl/icu_capi/cpp/docs/source/properties_maps_ffi.rst169
-rw-r--r--intl/icu_capi/cpp/docs/source/properties_names_ffi.rst102
-rw-r--r--intl/icu_capi/cpp/docs/source/properties_sets_ffi.rst384
-rw-r--r--intl/icu_capi/cpp/docs/source/properties_unisets_ffi.rst62
-rw-r--r--intl/icu_capi/cpp/docs/source/provider_ffi.rst84
-rw-r--r--intl/icu_capi/cpp/docs/source/script_ffi.rst111
-rw-r--r--intl/icu_capi/cpp/docs/source/segmenter_grapheme_ffi.rst79
-rw-r--r--intl/icu_capi/cpp/docs/source/segmenter_line_ffi.rst155
-rw-r--r--intl/icu_capi/cpp/docs/source/segmenter_sentence_ffi.rst79
-rw-r--r--intl/icu_capi/cpp/docs/source/segmenter_word_ffi.rst150
-rw-r--r--intl/icu_capi/cpp/docs/source/time_ffi.rst51
-rw-r--r--intl/icu_capi/cpp/docs/source/timezone_ffi.rst279
-rw-r--r--intl/icu_capi/cpp/docs/source/timezone_formatter_ffi.rst137
-rw-r--r--intl/icu_capi/cpp/docs/source/week_ffi.rst55
-rw-r--r--intl/icu_capi/cpp/docs/source/zoned_formatter_ffi.rst94
43 files changed, 5366 insertions, 0 deletions
diff --git a/intl/icu_capi/cpp/docs/source/bidi_ffi.rst b/intl/icu_capi/cpp/docs/source/bidi_ffi.rst
new file mode 100644
index 0000000000..90164c4daa
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/bidi_ffi.rst
@@ -0,0 +1,194 @@
+``bidi::ffi``
+=============
+
+.. cpp:class:: ICU4XBidi
+
+ An ICU4X Bidi object, containing loaded bidi data
+
+ See the `Rust documentation for BidiClassAdapter <https://docs.rs/icu/latest/icu/properties/bidi/struct.BidiClassAdapter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XBidi, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Creates a new :cpp:class:`ICU4XBidi` from locale data.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/properties/bidi/struct.BidiClassAdapter.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XBidiInfo for_text(const std::string_view text, uint8_t default_level) const
+
+ Use the data loaded in this object to process a string and calculate bidi information
+
+ Takes in a Level for the default level, if it is an invalid value it will default to LTR
+
+ See the `Rust documentation for new_with_data_source <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.BidiInfo.html#method.new_with_data_source>`__ for more information.
+
+ Lifetimes: ``text`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XReorderedIndexMap reorder_visual(const diplomat::span<const uint8_t> levels) const
+
+ Utility function for producing reorderings given a list of levels
+
+ Produces a map saying which visual index maps to which source index.
+
+ The levels array must not have values greater than 126 (this is the Bidi maximum explicit depth plus one). Failure to follow this invariant may lead to incorrect results, but is still safe.
+
+ See the `Rust documentation for reorder_visual <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.BidiInfo.html#method.reorder_visual>`__ for more information.
+
+
+ .. cpp:function:: static bool level_is_rtl(uint8_t level)
+
+ Check if a Level returned by level_at is an RTL level.
+
+ Invalid levels (numbers greater than 125) will be assumed LTR
+
+ See the `Rust documentation for is_rtl <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Level.html#method.is_rtl>`__ for more information.
+
+
+ .. cpp:function:: static bool level_is_ltr(uint8_t level)
+
+ Check if a Level returned by level_at is an LTR level.
+
+ Invalid levels (numbers greater than 125) will be assumed LTR
+
+ See the `Rust documentation for is_ltr <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Level.html#method.is_ltr>`__ for more information.
+
+
+ .. cpp:function:: static uint8_t level_rtl()
+
+ Get a basic RTL Level value
+
+ See the `Rust documentation for rtl <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Level.html#method.rtl>`__ for more information.
+
+
+ .. cpp:function:: static uint8_t level_ltr()
+
+ Get a simple LTR Level value
+
+ See the `Rust documentation for ltr <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Level.html#method.ltr>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XBidiDirection
+
+ .. cpp:enumerator:: Ltr
+
+ .. cpp:enumerator:: Rtl
+
+ .. cpp:enumerator:: Mixed
+
+.. cpp:class:: ICU4XBidiInfo
+
+ An object containing bidi information for a given string, produced by ``for_text()`` on ``ICU4XBidi``
+
+ See the `Rust documentation for BidiInfo <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.BidiInfo.html>`__ for more information.
+
+
+ .. cpp:function:: size_t paragraph_count() const
+
+ The number of paragraphs contained here
+
+
+ .. cpp:function:: std::optional<ICU4XBidiParagraph> paragraph_at(size_t n) const
+
+ Get the nth paragraph, returning ``None`` if out of bounds
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: size_t size() const
+
+ The number of bytes in this full text
+
+
+ .. cpp:function:: uint8_t level_at(size_t pos) const
+
+ Get the BIDI level at a particular byte index in the full text. This integer is conceptually a ``unicode_bidi::Level``, and can be further inspected using the static methods on ICU4XBidi.
+
+ Returns 0 (equivalent to ``Level::ltr()``) on error
+
+
+.. cpp:class:: ICU4XBidiParagraph
+
+ Bidi information for a single processed paragraph
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> set_paragraph_in_text(size_t n)
+
+ Given a paragraph index ``n`` within the surrounding text, this sets this object to the paragraph at that index. Returns ``ICU4XError::OutOfBoundsError`` when out of bounds.
+
+ This is equivalent to calling ``paragraph_at()`` on ``ICU4XBidiInfo`` but doesn't create a new object
+
+
+ .. cpp:function:: ICU4XBidiDirection direction() const
+
+ The primary direction of this paragraph
+
+ See the `Rust documentation for level_at <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Paragraph.html#method.level_at>`__ for more information.
+
+
+ .. cpp:function:: size_t size() const
+
+ The number of bytes in this paragraph
+
+ See the `Rust documentation for len <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.ParagraphInfo.html#method.len>`__ for more information.
+
+
+ .. cpp:function:: size_t range_start() const
+
+ The start index of this paragraph within the source text
+
+
+ .. cpp:function:: size_t range_end() const
+
+ The end index of this paragraph within the source text
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> reorder_line_to_writeable(size_t range_start, size_t range_end, W& out) const
+
+ Reorder a line based on display order. The ranges are specified relative to the source text and must be contained within this paragraph's range.
+
+ See the `Rust documentation for level_at <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Paragraph.html#method.level_at>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> reorder_line(size_t range_start, size_t range_end) const
+
+ Reorder a line based on display order. The ranges are specified relative to the source text and must be contained within this paragraph's range.
+
+ See the `Rust documentation for level_at <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Paragraph.html#method.level_at>`__ for more information.
+
+
+ .. cpp:function:: uint8_t level_at(size_t pos) const
+
+ Get the BIDI level at a particular byte index in this paragraph. This integer is conceptually a ``unicode_bidi::Level``, and can be further inspected using the static methods on ICU4XBidi.
+
+ Returns 0 (equivalent to ``Level::ltr()``) on error
+
+ See the `Rust documentation for level_at <https://docs.rs/unicode_bidi/latest/unicode_bidi/struct.Paragraph.html#method.level_at>`__ for more information.
+
+
+.. cpp:class:: ICU4XReorderedIndexMap
+
+ Thin wrapper around a vector that maps visual indices to source indices
+
+ ``map[visualIndex] = sourceIndex``
+
+ Produced by ``reorder_visual()`` on :cpp:class:`ICU4XBidi`.
+
+
+ .. cpp:function:: const diplomat::span<const size_t> as_slice() const
+
+ Get this as a slice/array of indices
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: size_t len() const
+
+ The length of this map
+
+
+ .. cpp:function:: size_t get(size_t index) const
+
+ Get element at ``index``. Returns 0 when out of bounds (note that 0 is also a valid in-bounds value, please use ``len()`` to avoid out-of-bounds)
+
diff --git a/intl/icu_capi/cpp/docs/source/calendar_ffi.rst b/intl/icu_capi/cpp/docs/source/calendar_ffi.rst
new file mode 100644
index 0000000000..fdae690d0d
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/calendar_ffi.rst
@@ -0,0 +1,157 @@
+``calendar::ffi``
+=================
+
+.. cpp:enum-struct:: ICU4XAnyCalendarKind
+
+ The various calendar types currently supported by :cpp:class:`ICU4XCalendar`
+
+ See the `Rust documentation for AnyCalendarKind <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendarKind.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Iso
+
+ The kind of an Iso calendar
+
+
+ .. cpp:enumerator:: Gregorian
+
+ The kind of a Gregorian calendar
+
+
+ .. cpp:enumerator:: Buddhist
+
+ The kind of a Buddhist calendar
+
+
+ .. cpp:enumerator:: Japanese
+
+ The kind of a Japanese calendar with modern eras
+
+
+ .. cpp:enumerator:: JapaneseExtended
+
+ The kind of a Japanese calendar with modern and historic eras
+
+
+ .. cpp:enumerator:: Ethiopian
+
+ The kind of an Ethiopian calendar, with Amete Mihret era
+
+
+ .. cpp:enumerator:: EthiopianAmeteAlem
+
+ The kind of an Ethiopian calendar, with Amete Alem era
+
+
+ .. cpp:enumerator:: Indian
+
+ The kind of a Indian calendar
+
+
+ .. cpp:enumerator:: Coptic
+
+ The kind of a Coptic calendar
+
+
+ .. cpp:enumerator:: Dangi
+
+ The kind of a Dangi calendar
+
+
+ .. cpp:enumerator:: Chinese
+
+ The kind of a Chinese calendar
+
+
+ .. cpp:enumerator:: Hebrew
+
+ The kind of a Hebrew calendar
+
+
+ .. cpp:enumerator:: IslamicCivil
+
+ The kind of a Islamic civil calendar
+
+
+ .. cpp:enumerator:: IslamicObservational
+
+ The kind of a Islamic observational calendar
+
+
+ .. cpp:enumerator:: IslamicTabular
+
+ The kind of a Islamic tabular calendar
+
+
+ .. cpp:enumerator:: IslamicUmmAlQura
+
+ The kind of a Islamic Umm al-Qura calendar
+
+
+ .. cpp:enumerator:: Persian
+
+ The kind of a Persian calendar
+
+
+ .. cpp:enumerator:: Roc
+
+ The kind of a Roc calendar
+
+
+ .. cpp:function:: static diplomat::result<ICU4XAnyCalendarKind, std::monostate> get_for_locale(const ICU4XLocale& locale)
+
+ Read the calendar type off of the -u-ca- extension on a locale.
+
+ Errors if there is no calendar on the locale or if the locale's calendar is not known or supported.
+
+ See the `Rust documentation for get_for_locale <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendarKind.html#method.get_for_locale>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XAnyCalendarKind, std::monostate> get_for_bcp47(const std::string_view s)
+
+ Obtain the calendar type given a BCP-47 -u-ca- extension string.
+
+ Errors if the calendar is not known or supported.
+
+ See the `Rust documentation for get_for_bcp47_value <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendarKind.html#method.get_for_bcp47_value>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> bcp47_to_writeable(W& write)
+
+ Obtain the string suitable for use in the -u-ca- extension in a BCP47 locale.
+
+ See the `Rust documentation for as_bcp47_string <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendarKind.html#method.as_bcp47_string>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> bcp47()
+
+ Obtain the string suitable for use in the -u-ca- extension in a BCP47 locale.
+
+ See the `Rust documentation for as_bcp47_string <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendarKind.html#method.as_bcp47_string>`__ for more information.
+
+
+.. cpp:class:: ICU4XCalendar
+
+ See the `Rust documentation for AnyCalendar <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendar.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCalendar, ICU4XError> create_for_locale(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Creates a new :cpp:class:`ICU4XCalendar` from the specified date and time.
+
+ See the `Rust documentation for new_for_locale <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendar.html#method.new_for_locale>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCalendar, ICU4XError> create_for_kind(const ICU4XDataProvider& provider, ICU4XAnyCalendarKind kind)
+
+ Creates a new :cpp:class:`ICU4XCalendar` from the specified date and time.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendar.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XAnyCalendarKind kind() const
+
+ Returns the kind of this calendar
+
+ See the `Rust documentation for kind <https://docs.rs/icu/latest/icu/calendar/enum.AnyCalendar.html#method.kind>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/casemap_ffi.rst b/intl/icu_capi/cpp/docs/source/casemap_ffi.rst
new file mode 100644
index 0000000000..051eb1038b
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/casemap_ffi.rst
@@ -0,0 +1,238 @@
+``casemap::ffi``
+================
+
+.. cpp:class:: ICU4XCaseMapCloser
+
+ See the `Rust documentation for CaseMapCloser <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapCloser.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCaseMapCloser, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XCaseMapper instance
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapCloser.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: void add_case_closure_to(char32_t c, ICU4XCodePointSetBuilder& builder) const
+
+ Adds all simple case mappings and the full case folding for ``c`` to ``builder``. Also adds special case closure mappings.
+
+ See the `Rust documentation for add_case_closure_to <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapCloser.html#method.add_case_closure_to>`__ for more information.
+
+
+ .. cpp:function:: bool add_string_case_closure_to(const std::string_view s, ICU4XCodePointSetBuilder& builder) const
+
+ Finds all characters and strings which may casemap to ``s`` as their full case folding string and adds them to the set.
+
+ Returns true if the string was found
+
+ See the `Rust documentation for add_string_case_closure_to <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapCloser.html#method.add_string_case_closure_to>`__ for more information.
+
+
+.. cpp:class:: ICU4XCaseMapper
+
+ See the `Rust documentation for CaseMapper <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCaseMapper, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XCaseMapper instance
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> lowercase_to_writeable(const std::string_view s, const ICU4XLocale& locale, W& write) const
+
+ Returns the full lowercase mapping of the given string
+
+ See the `Rust documentation for lowercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.lowercase>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> lowercase(const std::string_view s, const ICU4XLocale& locale) const
+
+ Returns the full lowercase mapping of the given string
+
+ See the `Rust documentation for lowercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.lowercase>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> uppercase_to_writeable(const std::string_view s, const ICU4XLocale& locale, W& write) const
+
+ Returns the full uppercase mapping of the given string
+
+ See the `Rust documentation for uppercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.uppercase>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> uppercase(const std::string_view s, const ICU4XLocale& locale) const
+
+ Returns the full uppercase mapping of the given string
+
+ See the `Rust documentation for uppercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.uppercase>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> titlecase_segment_with_only_case_data_v1_to_writeable(const std::string_view s, const ICU4XLocale& locale, ICU4XTitlecaseOptionsV1 options, W& write) const
+
+ Returns the full titlecase mapping of the given string, performing head adjustment without loading additional data. (if head adjustment is enabled in the options)
+
+ The ``v1`` refers to the version of the options struct, which may change as we add more options
+
+ See the `Rust documentation for titlecase_segment_with_only_case_data <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.titlecase_segment_with_only_case_data>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> titlecase_segment_with_only_case_data_v1(const std::string_view s, const ICU4XLocale& locale, ICU4XTitlecaseOptionsV1 options) const
+
+ Returns the full titlecase mapping of the given string, performing head adjustment without loading additional data. (if head adjustment is enabled in the options)
+
+ The ``v1`` refers to the version of the options struct, which may change as we add more options
+
+ See the `Rust documentation for titlecase_segment_with_only_case_data <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.titlecase_segment_with_only_case_data>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> fold_to_writeable(const std::string_view s, W& write) const
+
+ Case-folds the characters in the given string
+
+ See the `Rust documentation for fold <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.fold>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> fold(const std::string_view s) const
+
+ Case-folds the characters in the given string
+
+ See the `Rust documentation for fold <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.fold>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> fold_turkic_to_writeable(const std::string_view s, W& write) const
+
+ Case-folds the characters in the given string using Turkic (T) mappings for dotted/dotless I.
+
+ See the `Rust documentation for fold_turkic <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.fold_turkic>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> fold_turkic(const std::string_view s) const
+
+ Case-folds the characters in the given string using Turkic (T) mappings for dotted/dotless I.
+
+ See the `Rust documentation for fold_turkic <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.fold_turkic>`__ for more information.
+
+
+ .. cpp:function:: void add_case_closure_to(char32_t c, ICU4XCodePointSetBuilder& builder) const
+
+ Adds all simple case mappings and the full case folding for ``c`` to ``builder``. Also adds special case closure mappings.
+
+ In other words, this adds all characters that this casemaps to, as well as all characters that may casemap to this one.
+
+ Note that since ICU4XCodePointSetBuilder does not contain strings, this will ignore string mappings.
+
+ Identical to the similarly named method on ``ICU4XCaseMapCloser``, use that if you plan on using string case closure mappings too.
+
+ See the `Rust documentation for add_case_closure_to <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.add_case_closure_to>`__ for more information.
+
+
+ .. cpp:function:: char32_t simple_lowercase(char32_t ch) const
+
+ Returns the simple lowercase mapping of the given character.
+
+ This function only implements simple and common mappings. Full mappings, which can map one char to a string, are not included. For full mappings, use ``ICU4XCaseMapper::lowercase``.
+
+ See the `Rust documentation for simple_lowercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.simple_lowercase>`__ for more information.
+
+
+ .. cpp:function:: char32_t simple_uppercase(char32_t ch) const
+
+ Returns the simple uppercase mapping of the given character.
+
+ This function only implements simple and common mappings. Full mappings, which can map one char to a string, are not included. For full mappings, use ``ICU4XCaseMapper::uppercase``.
+
+ See the `Rust documentation for simple_uppercase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.simple_uppercase>`__ for more information.
+
+
+ .. cpp:function:: char32_t simple_titlecase(char32_t ch) const
+
+ Returns the simple titlecase mapping of the given character.
+
+ This function only implements simple and common mappings. Full mappings, which can map one char to a string, are not included. For full mappings, use ``ICU4XCaseMapper::titlecase_segment``.
+
+ See the `Rust documentation for simple_titlecase <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.simple_titlecase>`__ for more information.
+
+
+ .. cpp:function:: char32_t simple_fold(char32_t ch) const
+
+ Returns the simple casefolding of the given character.
+
+ This function only implements simple folding. For full folding, use ``ICU4XCaseMapper::fold``.
+
+ See the `Rust documentation for simple_fold <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.simple_fold>`__ for more information.
+
+
+ .. cpp:function:: char32_t simple_fold_turkic(char32_t ch) const
+
+ Returns the simple casefolding of the given character in the Turkic locale
+
+ This function only implements simple folding. For full folding, use ``ICU4XCaseMapper::fold_turkic``.
+
+ See the `Rust documentation for simple_fold_turkic <https://docs.rs/icu/latest/icu/casemap/struct.CaseMapper.html#method.simple_fold_turkic>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XLeadingAdjustment
+
+ See the `Rust documentation for LeadingAdjustment <https://docs.rs/icu/latest/icu/casemap/titlecase/enum.LeadingAdjustment.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: None
+
+ .. cpp:enumerator:: ToCased
+
+.. cpp:class:: ICU4XTitlecaseMapper
+
+ See the `Rust documentation for TitlecaseMapper <https://docs.rs/icu/latest/icu/casemap/struct.TitlecaseMapper.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTitlecaseMapper, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ``ICU4XTitlecaseMapper`` instance
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/casemap/struct.TitlecaseMapper.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> titlecase_segment_v1_to_writeable(const std::string_view s, const ICU4XLocale& locale, ICU4XTitlecaseOptionsV1 options, W& write) const
+
+ Returns the full titlecase mapping of the given string
+
+ The ``v1`` refers to the version of the options struct, which may change as we add more options
+
+ See the `Rust documentation for titlecase_segment <https://docs.rs/icu/latest/icu/casemap/struct.TitlecaseMapper.html#method.titlecase_segment>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> titlecase_segment_v1(const std::string_view s, const ICU4XLocale& locale, ICU4XTitlecaseOptionsV1 options) const
+
+ Returns the full titlecase mapping of the given string
+
+ The ``v1`` refers to the version of the options struct, which may change as we add more options
+
+ See the `Rust documentation for titlecase_segment <https://docs.rs/icu/latest/icu/casemap/struct.TitlecaseMapper.html#method.titlecase_segment>`__ for more information.
+
+
+.. cpp:struct:: ICU4XTitlecaseOptionsV1
+
+ See the `Rust documentation for TitlecaseOptions <https://docs.rs/icu/latest/icu/casemap/titlecase/struct.TitlecaseOptions.html>`__ for more information.
+
+
+ .. cpp:member:: ICU4XLeadingAdjustment leading_adjustment
+
+ .. cpp:member:: ICU4XTrailingCase trailing_case
+
+ .. cpp:function:: static ICU4XTitlecaseOptionsV1 default_options()
+
+ See the `Rust documentation for default <https://docs.rs/icu/latest/icu/casemap/titlecase/struct.TitlecaseOptions.html#method.default>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XTrailingCase
+
+ See the `Rust documentation for TrailingCase <https://docs.rs/icu/latest/icu/casemap/titlecase/enum.TrailingCase.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Lower
+
+ .. cpp:enumerator:: Unchanged
diff --git a/intl/icu_capi/cpp/docs/source/collator_ffi.rst b/intl/icu_capi/cpp/docs/source/collator_ffi.rst
new file mode 100644
index 0000000000..ce3c24f07b
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/collator_ffi.rst
@@ -0,0 +1,147 @@
+``collator::ffi``
+=================
+
+.. cpp:class:: ICU4XCollator
+
+ See the `Rust documentation for Collator <https://docs.rs/icu/latest/icu/collator/struct.Collator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCollator, ICU4XError> create_v1(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XCollatorOptionsV1 options)
+
+ Construct a new Collator instance.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/collator/struct.Collator.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XOrdering compare(const std::string_view left, const std::string_view right) const
+
+ Compare potentially ill-formed UTF-8 strings.
+
+ Ill-formed input is compared as if errors had been replaced with REPLACEMENT CHARACTERs according to the WHATWG Encoding Standard.
+
+ See the `Rust documentation for compare_utf8 <https://docs.rs/icu/latest/icu/collator/struct.Collator.html#method.compare_utf8>`__ for more information.
+
+
+ .. cpp:function:: ICU4XOrdering compare_valid_utf8(const std::string_view left, const std::string_view right) const
+
+ Compare guaranteed well-formed UTF-8 strings.
+
+ Note: In C++, passing ill-formed UTF-8 strings is undefined behavior (and may be memory-unsafe to do so, too).
+
+ See the `Rust documentation for compare <https://docs.rs/icu/latest/icu/collator/struct.Collator.html#method.compare>`__ for more information.
+
+
+ .. cpp:function:: ICU4XOrdering compare_utf16(const diplomat::span<const uint16_t> left, const diplomat::span<const uint16_t> right) const
+
+ Compare potentially ill-formed UTF-16 strings, with unpaired surrogates compared as REPLACEMENT CHARACTER.
+
+ See the `Rust documentation for compare_utf16 <https://docs.rs/icu/latest/icu/collator/struct.Collator.html#method.compare_utf16>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XCollatorAlternateHandling
+
+ See the `Rust documentation for AlternateHandling <https://docs.rs/icu/latest/icu/collator/enum.AlternateHandling.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: NonIgnorable
+
+ .. cpp:enumerator:: Shifted
+
+.. cpp:enum-struct:: ICU4XCollatorBackwardSecondLevel
+
+ See the `Rust documentation for BackwardSecondLevel <https://docs.rs/icu/latest/icu/collator/enum.BackwardSecondLevel.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Off
+
+ .. cpp:enumerator:: On
+
+.. cpp:enum-struct:: ICU4XCollatorCaseFirst
+
+ See the `Rust documentation for CaseFirst <https://docs.rs/icu/latest/icu/collator/enum.CaseFirst.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Off
+
+ .. cpp:enumerator:: LowerFirst
+
+ .. cpp:enumerator:: UpperFirst
+
+.. cpp:enum-struct:: ICU4XCollatorCaseLevel
+
+ See the `Rust documentation for CaseLevel <https://docs.rs/icu/latest/icu/collator/enum.CaseLevel.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Off
+
+ .. cpp:enumerator:: On
+
+.. cpp:enum-struct:: ICU4XCollatorMaxVariable
+
+ See the `Rust documentation for MaxVariable <https://docs.rs/icu/latest/icu/collator/enum.MaxVariable.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Space
+
+ .. cpp:enumerator:: Punctuation
+
+ .. cpp:enumerator:: Symbol
+
+ .. cpp:enumerator:: Currency
+
+.. cpp:enum-struct:: ICU4XCollatorNumeric
+
+ See the `Rust documentation for Numeric <https://docs.rs/icu/latest/icu/collator/enum.Numeric.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Off
+
+ .. cpp:enumerator:: On
+
+.. cpp:struct:: ICU4XCollatorOptionsV1
+
+ See the `Rust documentation for CollatorOptions <https://docs.rs/icu/latest/icu/collator/struct.CollatorOptions.html>`__ for more information.
+
+
+ .. cpp:member:: ICU4XCollatorStrength strength
+
+ .. cpp:member:: ICU4XCollatorAlternateHandling alternate_handling
+
+ .. cpp:member:: ICU4XCollatorCaseFirst case_first
+
+ .. cpp:member:: ICU4XCollatorMaxVariable max_variable
+
+ .. cpp:member:: ICU4XCollatorCaseLevel case_level
+
+ .. cpp:member:: ICU4XCollatorNumeric numeric
+
+ .. cpp:member:: ICU4XCollatorBackwardSecondLevel backward_second_level
+
+.. cpp:enum-struct:: ICU4XCollatorStrength
+
+ See the `Rust documentation for Strength <https://docs.rs/icu/latest/icu/collator/enum.Strength.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Primary
+
+ .. cpp:enumerator:: Secondary
+
+ .. cpp:enumerator:: Tertiary
+
+ .. cpp:enumerator:: Quaternary
+
+ .. cpp:enumerator:: Identical
diff --git a/intl/icu_capi/cpp/docs/source/collections_sets_ffi.rst b/intl/icu_capi/cpp/docs/source/collections_sets_ffi.rst
new file mode 100644
index 0000000000..cdf1e1c046
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/collections_sets_ffi.rst
@@ -0,0 +1,143 @@
+``collections_sets::ffi``
+=========================
+
+.. cpp:class:: ICU4XCodePointSetBuilder
+
+ See the `Rust documentation for CodePointInversionListBuilder <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XCodePointSetBuilder create()
+
+ Make a new set builder containing nothing
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XCodePointSetData build()
+
+ Build this into a set
+
+ This object is repopulated with an empty builder
+
+ See the `Rust documentation for build <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.build>`__ for more information.
+
+
+ .. cpp:function:: void complement()
+
+ Complements this set
+
+ (Elements in this set are removed and vice versa)
+
+ See the `Rust documentation for complement <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement>`__ for more information.
+
+
+ .. cpp:function:: bool is_empty() const
+
+ Returns whether this set is empty
+
+ See the `Rust documentation for is_empty <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.is_empty>`__ for more information.
+
+
+ .. cpp:function:: void add_char(char32_t ch)
+
+ Add a single character to the set
+
+ See the `Rust documentation for add_char <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_char>`__ for more information.
+
+
+ .. cpp:function:: void add_u32(uint32_t ch)
+
+ Add a single u32 value to the set
+
+ See the `Rust documentation for add_u32 <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_u32>`__ for more information.
+
+
+ .. cpp:function:: void add_inclusive_range(char32_t start, char32_t end)
+
+ Add an inclusive range of characters to the set
+
+ See the `Rust documentation for add_range <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_range>`__ for more information.
+
+
+ .. cpp:function:: void add_inclusive_range_u32(uint32_t start, uint32_t end)
+
+ Add an inclusive range of u32s to the set
+
+ See the `Rust documentation for add_range_u32 <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_range_u32>`__ for more information.
+
+
+ .. cpp:function:: void add_set(const ICU4XCodePointSetData& data)
+
+ Add all elements that belong to the provided set to the set
+
+ See the `Rust documentation for add_set <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_set>`__ for more information.
+
+
+ .. cpp:function:: void remove_char(char32_t ch)
+
+ Remove a single character to the set
+
+ See the `Rust documentation for remove_char <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_char>`__ for more information.
+
+
+ .. cpp:function:: void remove_inclusive_range(char32_t start, char32_t end)
+
+ Remove an inclusive range of characters from the set
+
+ See the `Rust documentation for remove_range <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_range>`__ for more information.
+
+
+ .. cpp:function:: void remove_set(const ICU4XCodePointSetData& data)
+
+ Remove all elements that belong to the provided set from the set
+
+ See the `Rust documentation for remove_set <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_set>`__ for more information.
+
+
+ .. cpp:function:: void retain_char(char32_t ch)
+
+ Removes all elements from the set except a single character
+
+ See the `Rust documentation for retain_char <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_char>`__ for more information.
+
+
+ .. cpp:function:: void retain_inclusive_range(char32_t start, char32_t end)
+
+ Removes all elements from the set except an inclusive range of characters f
+
+ See the `Rust documentation for retain_range <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_range>`__ for more information.
+
+
+ .. cpp:function:: void retain_set(const ICU4XCodePointSetData& data)
+
+ Removes all elements from the set except all elements in the provided set
+
+ See the `Rust documentation for retain_set <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_set>`__ for more information.
+
+
+ .. cpp:function:: void complement_char(char32_t ch)
+
+ Complement a single character to the set
+
+ (Characters which are in this set are removed and vice versa)
+
+ See the `Rust documentation for complement_char <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_char>`__ for more information.
+
+
+ .. cpp:function:: void complement_inclusive_range(char32_t start, char32_t end)
+
+ Complement an inclusive range of characters from the set
+
+ (Characters which are in this set are removed and vice versa)
+
+ See the `Rust documentation for complement_range <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_range>`__ for more information.
+
+
+ .. cpp:function:: void complement_set(const ICU4XCodePointSetData& data)
+
+ Complement all elements that belong to the provided set from the set
+
+ (Characters which are in this set are removed and vice versa)
+
+ See the `Rust documentation for complement_set <https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_set>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/common_ffi.rst b/intl/icu_capi/cpp/docs/source/common_ffi.rst
new file mode 100644
index 0000000000..738c3c9219
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/common_ffi.rst
@@ -0,0 +1,13 @@
+``common::ffi``
+===============
+
+.. cpp:enum-struct:: ICU4XOrdering
+
+ See the `Rust documentation for Ordering <https://docs.rs/core/latest/core/cmp/enum.Ordering.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Less
+
+ .. cpp:enumerator:: Equal
+
+ .. cpp:enumerator:: Greater
diff --git a/intl/icu_capi/cpp/docs/source/conf.py b/intl/icu_capi/cpp/docs/source/conf.py
new file mode 100644
index 0000000000..e74a0a03a2
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/conf.py
@@ -0,0 +1,60 @@
+# 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 ).
+
+# Configuration file for the Sphinx documentation builder.
+#
+# This file only contains a selection of the most common options. For a full
+# list see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'ICU4X'
+copyright = '2022, The ICU4X Developers'
+author = 'The ICU4X Developers'
+
+
+# -- General configuration ---------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = []
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'sphinx_rtd_theme'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = []
+
+html_theme_options = {
+ 'navigation_depth': 4,
+} \ No newline at end of file
diff --git a/intl/icu_capi/cpp/docs/source/data_struct_ffi.rst b/intl/icu_capi/cpp/docs/source/data_struct_ffi.rst
new file mode 100644
index 0000000000..2ba8663bd3
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/data_struct_ffi.rst
@@ -0,0 +1,18 @@
+``data_struct::ffi``
+====================
+
+.. cpp:class:: ICU4XDataStruct
+
+ A generic data struct to be used by ICU4X
+
+ This can be used to construct a StructDataProvider.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDataStruct, ICU4XError> create_decimal_symbols_v1(const std::string_view plus_sign_prefix, const std::string_view plus_sign_suffix, const std::string_view minus_sign_prefix, const std::string_view minus_sign_suffix, const std::string_view decimal_separator, const std::string_view grouping_separator, uint8_t primary_group_size, uint8_t secondary_group_size, uint8_t min_group_size, const diplomat::span<const char32_t> digits)
+
+ Construct a new DecimalSymbolsV1 data struct.
+
+ C++ users: All string arguments must be valid UTF8
+
+ See the `Rust documentation for DecimalSymbolsV1 <https://docs.rs/icu/latest/icu/decimal/provider/struct.DecimalSymbolsV1.html>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/date_ffi.rst b/intl/icu_capi/cpp/docs/source/date_ffi.rst
new file mode 100644
index 0000000000..0e7a5bfe32
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/date_ffi.rst
@@ -0,0 +1,264 @@
+``date::ffi``
+=============
+
+.. cpp:class:: ICU4XDate
+
+ An ICU4X Date object capable of containing a date and time for any calendar.
+
+ See the `Rust documentation for Date <https://docs.rs/icu/latest/icu/calendar/struct.Date.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDate, ICU4XError> create_from_iso_in_calendar(int32_t year, uint8_t month, uint8_t day, const ICU4XCalendar& calendar)
+
+ Creates a new :cpp:class:`ICU4XDate` representing the ISO date and time given but in a given calendar
+
+ See the `Rust documentation for new_from_iso <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.new_from_iso>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDate, ICU4XError> create_from_codes_in_calendar(const std::string_view era_code, int32_t year, const std::string_view month_code, uint8_t day, const ICU4XCalendar& calendar)
+
+ Creates a new :cpp:class:`ICU4XDate` from the given codes, which are interpreted in the given calendar system
+
+ See the `Rust documentation for try_new_from_codes <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.try_new_from_codes>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDate to_calendar(const ICU4XCalendar& calendar) const
+
+ Convert this date to one in a different calendar
+
+ See the `Rust documentation for to_calendar <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.to_calendar>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoDate to_iso() const
+
+ Converts this date to ISO
+
+ See the `Rust documentation for to_iso <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.to_iso>`__ for more information.
+
+
+ .. cpp:function:: uint32_t day_of_month() const
+
+ Returns the 1-indexed day in the month for this date
+
+ See the `Rust documentation for day_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_month>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoWeekday day_of_week() const
+
+ Returns the day in the week for this day
+
+ See the `Rust documentation for day_of_week <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_week>`__ for more information.
+
+
+ .. cpp:function:: uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
+
+ Returns the week number in this month, 1-indexed, based on what is considered the first day of the week (often a locale preference).
+
+ ``first_weekday`` can be obtained via ``first_weekday()`` on :cpp:class:`ICU4XWeekCalculator`
+
+ See the `Rust documentation for week_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<ICU4XWeekOf, ICU4XError> week_of_year(const ICU4XWeekCalculator& calculator) const
+
+ Returns the week number in this year, using week data
+
+ See the `Rust documentation for week_of_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_year>`__ for more information.
+
+
+ .. cpp:function:: uint32_t ordinal_month() const
+
+ Returns 1-indexed number of the month of this date in its year
+
+ Note that for lunar calendars this may not lead to the same month having the same ordinal month across years; use month_code if you care about month identity.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> month_code_to_writeable(W& write) const
+
+ Returns the month code for this date. Typically something like "M01", "M02", but can be more complicated for lunar calendars.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> month_code() const
+
+ Returns the month code for this date. Typically something like "M01", "M02", but can be more complicated for lunar calendars.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: int32_t year_in_era() const
+
+ Returns the year number in the current era for this date
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> era_to_writeable(W& write) const
+
+ Returns the era for this date,
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/struct.Date.html#method.year>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/types/struct.Era.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> era() const
+
+ Returns the era for this date,
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/struct.Date.html#method.year>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/types/struct.Era.html>`__
+
+
+ .. cpp:function:: uint8_t months_in_year() const
+
+ Returns the number of months in the year represented by this date
+
+ See the `Rust documentation for months_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.months_in_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t days_in_month() const
+
+ Returns the number of days in the month represented by this date
+
+ See the `Rust documentation for days_in_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_month>`__ for more information.
+
+
+ .. cpp:function:: uint16_t days_in_year() const
+
+ Returns the number of days in the year represented by this date
+
+ See the `Rust documentation for days_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_year>`__ for more information.
+
+
+ .. cpp:function:: ICU4XCalendar calendar() const
+
+ Returns the :cpp:class:`ICU4XCalendar` object backing this date
+
+ See the `Rust documentation for calendar <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.calendar>`__ for more information.
+
+
+.. cpp:class:: ICU4XIsoDate
+
+ An ICU4X Date object capable of containing a ISO-8601 date
+
+ See the `Rust documentation for Date <https://docs.rs/icu/latest/icu/calendar/struct.Date.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XIsoDate, ICU4XError> create(int32_t year, uint8_t month, uint8_t day)
+
+ Creates a new :cpp:class:`ICU4XIsoDate` from the specified date and time.
+
+ See the `Rust documentation for try_new_iso_date <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.try_new_iso_date>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XIsoDate create_for_unix_epoch()
+
+ Creates a new :cpp:class:`ICU4XIsoDate` representing January 1, 1970.
+
+ See the `Rust documentation for unix_epoch <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.unix_epoch>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDate to_calendar(const ICU4XCalendar& calendar) const
+
+ Convert this date to one in a different calendar
+
+ See the `Rust documentation for to_calendar <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.to_calendar>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDate to_any() const
+
+ See the `Rust documentation for to_any <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.to_any>`__ for more information.
+
+
+ .. cpp:function:: uint32_t day_of_month() const
+
+ Returns the 1-indexed day in the month for this date
+
+ See the `Rust documentation for day_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_month>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoWeekday day_of_week() const
+
+ Returns the day in the week for this day
+
+ See the `Rust documentation for day_of_week <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_week>`__ for more information.
+
+
+ .. cpp:function:: uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
+
+ Returns the week number in this month, 1-indexed, based on what is considered the first day of the week (often a locale preference).
+
+ ``first_weekday`` can be obtained via ``first_weekday()`` on :cpp:class:`ICU4XWeekCalculator`
+
+ See the `Rust documentation for week_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<ICU4XWeekOf, ICU4XError> week_of_year(const ICU4XWeekCalculator& calculator) const
+
+ Returns the week number in this year, using week data
+
+ See the `Rust documentation for week_of_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_year>`__ for more information.
+
+
+ .. cpp:function:: uint32_t month() const
+
+ Returns 1-indexed number of the month of this date in its year
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: int32_t year() const
+
+ Returns the year number for this date
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: bool is_in_leap_year() const
+
+ Returns if the year is a leap year for this date
+
+ See the `Rust documentation for is_in_leap_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.is_in_leap_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t months_in_year() const
+
+ Returns the number of months in the year represented by this date
+
+ See the `Rust documentation for months_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.months_in_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t days_in_month() const
+
+ Returns the number of days in the month represented by this date
+
+ See the `Rust documentation for days_in_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_month>`__ for more information.
+
+
+ .. cpp:function:: uint16_t days_in_year() const
+
+ Returns the number of days in the year represented by this date
+
+ See the `Rust documentation for days_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_year>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XIsoWeekday
+
+ .. cpp:enumerator:: Monday
+
+ .. cpp:enumerator:: Tuesday
+
+ .. cpp:enumerator:: Wednesday
+
+ .. cpp:enumerator:: Thursday
+
+ .. cpp:enumerator:: Friday
+
+ .. cpp:enumerator:: Saturday
+
+ .. cpp:enumerator:: Sunday
diff --git a/intl/icu_capi/cpp/docs/source/datetime_ffi.rst b/intl/icu_capi/cpp/docs/source/datetime_ffi.rst
new file mode 100644
index 0000000000..85a04b18a1
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/datetime_ffi.rst
@@ -0,0 +1,351 @@
+``datetime::ffi``
+=================
+
+.. cpp:class:: ICU4XDateTime
+
+ An ICU4X DateTime object capable of containing a date and time for any calendar.
+
+ See the `Rust documentation for DateTime <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDateTime, ICU4XError> create_from_iso_in_calendar(int32_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond, const ICU4XCalendar& calendar)
+
+ Creates a new :cpp:class:`ICU4XDateTime` representing the ISO date and time given but in a given calendar
+
+ See the `Rust documentation for new_from_iso <https://docs.rs/icu/latest/icu/struct.DateTime.html#method.new_from_iso>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDateTime, ICU4XError> create_from_codes_in_calendar(const std::string_view era_code, int32_t year, const std::string_view month_code, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond, const ICU4XCalendar& calendar)
+
+ Creates a new :cpp:class:`ICU4XDateTime` from the given codes, which are interpreted in the given calendar system
+
+ See the `Rust documentation for try_new_from_codes <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.try_new_from_codes>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XDateTime create_from_date_and_time(const ICU4XDate& date, const ICU4XTime& time)
+
+ Creates a new :cpp:class:`ICU4XDateTime` from an :cpp:class:`ICU4XDate` and :cpp:class:`ICU4XTime` object
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDate date() const
+
+ Gets a copy of the date contained in this object
+
+ See the `Rust documentation for date <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#structfield.date>`__ for more information.
+
+
+ .. cpp:function:: ICU4XTime time() const
+
+ Gets the time contained in this object
+
+ See the `Rust documentation for time <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#structfield.time>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoDateTime to_iso() const
+
+ Converts this date to ISO
+
+ See the `Rust documentation for to_iso <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.to_iso>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDateTime to_calendar(const ICU4XCalendar& calendar) const
+
+ Convert this datetime to one in a different calendar
+
+ See the `Rust documentation for to_calendar <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.to_calendar>`__ for more information.
+
+
+ .. cpp:function:: uint8_t hour() const
+
+ Returns the hour in this time
+
+ See the `Rust documentation for hour <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.hour>`__ for more information.
+
+
+ .. cpp:function:: uint8_t minute() const
+
+ Returns the minute in this time
+
+ See the `Rust documentation for minute <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.minute>`__ for more information.
+
+
+ .. cpp:function:: uint8_t second() const
+
+ Returns the second in this time
+
+ See the `Rust documentation for second <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.second>`__ for more information.
+
+
+ .. cpp:function:: uint32_t nanosecond() const
+
+ Returns the nanosecond in this time
+
+ See the `Rust documentation for nanosecond <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.nanosecond>`__ for more information.
+
+
+ .. cpp:function:: uint32_t day_of_month() const
+
+ Returns the 1-indexed day in the month for this date
+
+ See the `Rust documentation for day_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_month>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoWeekday day_of_week() const
+
+ Returns the day in the week for this day
+
+ See the `Rust documentation for day_of_week <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_week>`__ for more information.
+
+
+ .. cpp:function:: uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
+
+ Returns the week number in this month, 1-indexed, based on what is considered the first day of the week (often a locale preference).
+
+ ``first_weekday`` can be obtained via ``first_weekday()`` on :cpp:class:`ICU4XWeekCalculator`
+
+ See the `Rust documentation for week_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<ICU4XWeekOf, ICU4XError> week_of_year(const ICU4XWeekCalculator& calculator) const
+
+ Returns the week number in this year, using week data
+
+ See the `Rust documentation for week_of_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_year>`__ for more information.
+
+
+ .. cpp:function:: uint32_t ordinal_month() const
+
+ Returns 1-indexed number of the month of this date in its year
+
+ Note that for lunar calendars this may not lead to the same month having the same ordinal month across years; use month_code if you care about month identity.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> month_code_to_writeable(W& write) const
+
+ Returns the month code for this date. Typically something like "M01", "M02", but can be more complicated for lunar calendars.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> month_code() const
+
+ Returns the month code for this date. Typically something like "M01", "M02", but can be more complicated for lunar calendars.
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: int32_t year_in_era() const
+
+ Returns the year number in the current era for this date
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> era_to_writeable(W& write) const
+
+ Returns the era for this date,
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> era() const
+
+ Returns the era for this date,
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t months_in_year() const
+
+ Returns the number of months in the year represented by this date
+
+ See the `Rust documentation for months_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.months_in_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t days_in_month() const
+
+ Returns the number of days in the month represented by this date
+
+ See the `Rust documentation for days_in_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_month>`__ for more information.
+
+
+ .. cpp:function:: uint16_t days_in_year() const
+
+ Returns the number of days in the year represented by this date
+
+ See the `Rust documentation for days_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_year>`__ for more information.
+
+
+ .. cpp:function:: ICU4XCalendar calendar() const
+
+ Returns the :cpp:class:`ICU4XCalendar` object backing this date
+
+ See the `Rust documentation for calendar <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.calendar>`__ for more information.
+
+
+.. cpp:class:: ICU4XIsoDateTime
+
+ An ICU4X DateTime object capable of containing a ISO-8601 date and time.
+
+ See the `Rust documentation for DateTime <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XIsoDateTime, ICU4XError> create(int32_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond)
+
+ Creates a new :cpp:class:`ICU4XIsoDateTime` from the specified date and time.
+
+ See the `Rust documentation for try_new_iso_datetime <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.try_new_iso_datetime>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XIsoDateTime crate_from_date_and_time(const ICU4XIsoDate& date, const ICU4XTime& time)
+
+ Creates a new :cpp:class:`ICU4XIsoDateTime` from an :cpp:class:`ICU4XIsoDate` and :cpp:class:`ICU4XTime` object
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XIsoDateTime create_from_minutes_since_local_unix_epoch(int32_t minutes)
+
+ Construct from the minutes since the local unix epoch for this date (Jan 1 1970, 00:00)
+
+ See the `Rust documentation for from_minutes_since_local_unix_epoch <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.from_minutes_since_local_unix_epoch>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoDate date() const
+
+ Gets the date contained in this object
+
+ See the `Rust documentation for date <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#structfield.date>`__ for more information.
+
+
+ .. cpp:function:: ICU4XTime time() const
+
+ Gets the time contained in this object
+
+ See the `Rust documentation for time <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#structfield.time>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDateTime to_any() const
+
+ Converts this to an :cpp:class:`ICU4XDateTime` capable of being mixed with dates of other calendars
+
+ See the `Rust documentation for to_any <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.to_any>`__ for more information.
+
+
+ .. cpp:function:: int32_t minutes_since_local_unix_epoch() const
+
+ Gets the minutes since the local unix epoch for this date (Jan 1 1970, 00:00)
+
+ See the `Rust documentation for minutes_since_local_unix_epoch <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.minutes_since_local_unix_epoch>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDateTime to_calendar(const ICU4XCalendar& calendar) const
+
+ Convert this datetime to one in a different calendar
+
+ See the `Rust documentation for to_calendar <https://docs.rs/icu/latest/icu/calendar/struct.DateTime.html#method.to_calendar>`__ for more information.
+
+
+ .. cpp:function:: uint8_t hour() const
+
+ Returns the hour in this time
+
+ See the `Rust documentation for hour <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.hour>`__ for more information.
+
+
+ .. cpp:function:: uint8_t minute() const
+
+ Returns the minute in this time
+
+ See the `Rust documentation for minute <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.minute>`__ for more information.
+
+
+ .. cpp:function:: uint8_t second() const
+
+ Returns the second in this time
+
+ See the `Rust documentation for second <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.second>`__ for more information.
+
+
+ .. cpp:function:: uint32_t nanosecond() const
+
+ Returns the nanosecond in this time
+
+ See the `Rust documentation for nanosecond <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.nanosecond>`__ for more information.
+
+
+ .. cpp:function:: uint32_t day_of_month() const
+
+ Returns the 1-indexed day in the month for this date
+
+ See the `Rust documentation for day_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_month>`__ for more information.
+
+
+ .. cpp:function:: ICU4XIsoWeekday day_of_week() const
+
+ Returns the day in the week for this day
+
+ See the `Rust documentation for day_of_week <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.day_of_week>`__ for more information.
+
+
+ .. cpp:function:: uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
+
+ Returns the week number in this month, 1-indexed, based on what is considered the first day of the week (often a locale preference).
+
+ ``first_weekday`` can be obtained via ``first_weekday()`` on :cpp:class:`ICU4XWeekCalculator`
+
+ See the `Rust documentation for week_of_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_month>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<ICU4XWeekOf, ICU4XError> week_of_year(const ICU4XWeekCalculator& calculator) const
+
+ Returns the week number in this year, using week data
+
+ See the `Rust documentation for week_of_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.week_of_year>`__ for more information.
+
+
+ .. cpp:function:: uint32_t month() const
+
+ Returns 1-indexed number of the month of this date in its year
+
+ See the `Rust documentation for month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.month>`__ for more information.
+
+
+ .. cpp:function:: int32_t year() const
+
+ Returns the year number for this date
+
+ See the `Rust documentation for year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.year>`__ for more information.
+
+
+ .. cpp:function:: bool is_in_leap_year() const
+
+ Returns whether this date is in a leap year
+
+ See the `Rust documentation for is_in_leap_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.is_in_leap_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t months_in_year() const
+
+ Returns the number of months in the year represented by this date
+
+ See the `Rust documentation for months_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.months_in_year>`__ for more information.
+
+
+ .. cpp:function:: uint8_t days_in_month() const
+
+ Returns the number of days in the month represented by this date
+
+ See the `Rust documentation for days_in_month <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_month>`__ for more information.
+
+
+ .. cpp:function:: uint16_t days_in_year() const
+
+ Returns the number of days in the year represented by this date
+
+ See the `Rust documentation for days_in_year <https://docs.rs/icu/latest/icu/calendar/struct.Date.html#method.days_in_year>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/datetime_formatter_ffi.rst b/intl/icu_capi/cpp/docs/source/datetime_formatter_ffi.rst
new file mode 100644
index 0000000000..7b55d90b54
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/datetime_formatter_ffi.rst
@@ -0,0 +1,278 @@
+``datetime_formatter::ffi``
+===========================
+
+.. cpp:class:: ICU4XDateFormatter
+
+ An ICU4X DateFormatter object capable of formatting a :cpp:class:`ICU4XDate` as a string, using some calendar specified at runtime in the locale.
+
+ See the `Rust documentation for DateFormatter <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDateFormatter, ICU4XError> create_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length)
+
+ Creates a new :cpp:class:`ICU4XDateFormatter` from locale data.
+
+ See the `Rust documentation for try_new_with_length <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.try_new_with_length>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_date_to_writeable(const ICU4XDate& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XDate` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_date(const ICU4XDate& value) const
+
+ Formats a :cpp:class:`ICU4XDate` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_date_to_writeable(const ICU4XIsoDate& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDate` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_date(const ICU4XIsoDate& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDate` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_datetime_to_writeable(const ICU4XDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_datetime(const ICU4XDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_to_writeable(const ICU4XIsoDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime(const ICU4XIsoDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XDateLength
+
+ See the `Rust documentation for Date <https://docs.rs/icu/latest/icu/datetime/options/length/enum.Date.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Full
+
+ .. cpp:enumerator:: Long
+
+ .. cpp:enumerator:: Medium
+
+ .. cpp:enumerator:: Short
+
+.. cpp:class:: ICU4XDateTimeFormatter
+
+ An ICU4X DateFormatter object capable of formatting a :cpp:class:`ICU4XDateTime` as a string, using some calendar specified at runtime in the locale.
+
+ See the `Rust documentation for DateTimeFormatter <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDateTimeFormatter, ICU4XError> create_with_lengths(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length)
+
+ Creates a new :cpp:class:`ICU4XDateTimeFormatter` from locale data.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_datetime_to_writeable(const ICU4XDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_datetime(const ICU4XDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_to_writeable(const ICU4XIsoDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime(const ICU4XIsoDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ Will convert to this formatter's calendar first
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.DateTimeFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:class:: ICU4XGregorianDateFormatter
+
+ An ICU4X TypedDateFormatter object capable of formatting a :cpp:class:`ICU4XIsoDateTime` as a string, using the Gregorian Calendar.
+
+ See the `Rust documentation for TypedDateFormatter <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGregorianDateFormatter, ICU4XError> create_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength length)
+
+ Creates a new :cpp:class:`ICU4XGregorianDateFormatter` from locale data.
+
+ See the `Rust documentation for try_new_with_length <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html#method.try_new_with_length>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_date_to_writeable(const ICU4XIsoDate& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDate` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_date(const ICU4XIsoDate& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDate` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_to_writeable(const ICU4XIsoDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime(const ICU4XIsoDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:class:: ICU4XGregorianDateTimeFormatter
+
+ An ICU4X TypedDateTimeFormatter object capable of formatting a :cpp:class:`ICU4XIsoDateTime` as a string, using the Gregorian Calendar.
+
+ See the `Rust documentation for TypedDateTimeFormatter <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateTimeFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGregorianDateTimeFormatter, ICU4XError> create_with_lengths(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length)
+
+ Creates a new :cpp:class:`ICU4XGregorianDateFormatter` from locale data.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_to_writeable(const ICU4XIsoDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime(const ICU4XIsoDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:class:: ICU4XTimeFormatter
+
+ An ICU4X TimeFormatter object capable of formatting an :cpp:class:`ICU4XTime` type (and others) as a string
+
+ See the `Rust documentation for TimeFormatter <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTimeFormatter, ICU4XError> create_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XTimeLength length)
+
+ Creates a new :cpp:class:`ICU4XTimeFormatter` from locale data.
+
+ See the `Rust documentation for try_new_with_length <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.try_new_with_length>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_time_to_writeable(const ICU4XTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_time(const ICU4XTime& value) const
+
+ Formats a :cpp:class:`ICU4XTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_datetime_to_writeable(const ICU4XDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_datetime(const ICU4XDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_to_writeable(const ICU4XIsoDateTime& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime(const ICU4XIsoDateTime& value) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TimeFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XTimeLength
+
+ See the `Rust documentation for Time <https://docs.rs/icu/latest/icu/datetime/options/length/enum.Time.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Full
+
+ .. cpp:enumerator:: Long
+
+ .. cpp:enumerator:: Medium
+
+ .. cpp:enumerator:: Short
diff --git a/intl/icu_capi/cpp/docs/source/decimal_ffi.rst b/intl/icu_capi/cpp/docs/source/decimal_ffi.rst
new file mode 100644
index 0000000000..bd975f8f4c
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/decimal_ffi.rst
@@ -0,0 +1,50 @@
+``decimal::ffi``
+================
+
+.. cpp:class:: ICU4XFixedDecimalFormatter
+
+ An ICU4X Fixed Decimal Format object, capable of formatting a :cpp:class:`ICU4XFixedDecimal` as a string.
+
+ See the `Rust documentation for FixedDecimalFormatter <https://docs.rs/icu/latest/icu/decimal/struct.FixedDecimalFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimalFormatter, ICU4XError> create_with_grouping_strategy(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XFixedDecimalGroupingStrategy grouping_strategy)
+
+ Creates a new :cpp:class:`ICU4XFixedDecimalFormatter` from locale data.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/decimal/struct.FixedDecimalFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimalFormatter, ICU4XError> create_with_decimal_symbols_v1(const ICU4XDataStruct& data_struct, ICU4XFixedDecimalGroupingStrategy grouping_strategy)
+
+ Creates a new :cpp:class:`ICU4XFixedDecimalFormatter` from preconstructed locale data in the form of an :cpp:class:`ICU4XDataStruct` constructed from ``ICU4XDataStruct::create_decimal_symbols()``.
+
+ The contents of the data struct will be consumed: if you wish to use the struct again it will have to be reconstructed. Passing a consumed struct to this method will return an error.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_to_writeable(const ICU4XFixedDecimal& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XFixedDecimal` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/decimal/struct.FixedDecimalFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format(const ICU4XFixedDecimal& value) const
+
+ Formats a :cpp:class:`ICU4XFixedDecimal` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/decimal/struct.FixedDecimalFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XFixedDecimalGroupingStrategy
+
+ See the `Rust documentation for GroupingStrategy <https://docs.rs/icu/latest/icu/decimal/options/enum.GroupingStrategy.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Never
+
+ .. cpp:enumerator:: Always
+
+ .. cpp:enumerator:: Min2
diff --git a/intl/icu_capi/cpp/docs/source/displaynames_ffi.rst b/intl/icu_capi/cpp/docs/source/displaynames_ffi.rst
new file mode 100644
index 0000000000..070f23b643
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/displaynames_ffi.rst
@@ -0,0 +1,107 @@
+``displaynames::ffi``
+=====================
+
+.. cpp:enum-struct:: ICU4XDisplayNamesFallback
+
+ See the `Rust documentation for Fallback <https://docs.rs/icu/latest/icu/displaynames/options/enum.Fallback.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Code
+
+ .. cpp:enumerator:: None
+
+.. cpp:struct:: ICU4XDisplayNamesOptionsV1
+
+ See the `Rust documentation for DisplayNamesOptions <https://docs.rs/icu/latest/icu/displaynames/options/struct.DisplayNamesOptions.html>`__ for more information.
+
+
+ .. cpp:member:: ICU4XDisplayNamesStyle style
+
+ The optional formatting style to use for display name.
+
+
+ .. cpp:member:: ICU4XDisplayNamesFallback fallback
+
+ The fallback return when the system does not have the requested display name, defaults to "code".
+
+
+ .. cpp:member:: ICU4XLanguageDisplay language_display
+
+ The language display kind, defaults to "dialect".
+
+
+.. cpp:enum-struct:: ICU4XDisplayNamesStyle
+
+ See the `Rust documentation for Style <https://docs.rs/icu/latest/icu/displaynames/options/enum.Style.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Narrow
+
+ .. cpp:enumerator:: Short
+
+ .. cpp:enumerator:: Long
+
+ .. cpp:enumerator:: Menu
+
+.. cpp:enum-struct:: ICU4XLanguageDisplay
+
+ See the `Rust documentation for LanguageDisplay <https://docs.rs/icu/latest/icu/displaynames/options/enum.LanguageDisplay.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Dialect
+
+ .. cpp:enumerator:: Standard
+
+.. cpp:class:: ICU4XLocaleDisplayNamesFormatter
+
+ See the `Rust documentation for LocaleDisplayNamesFormatter <https://docs.rs/icu/latest/icu/displaynames/struct.LocaleDisplayNamesFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleDisplayNamesFormatter, ICU4XError> create(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDisplayNamesOptionsV1 options)
+
+ Creates a new ``LocaleDisplayNamesFormatter`` from locale data and an options bag.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/displaynames/struct.LocaleDisplayNamesFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> of_to_writeable(const ICU4XLocale& locale, W& write) const
+
+ Returns the locale-specific display name of a locale.
+
+ See the `Rust documentation for of <https://docs.rs/icu/latest/icu/displaynames/struct.LocaleDisplayNamesFormatter.html#method.of>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> of(const ICU4XLocale& locale) const
+
+ Returns the locale-specific display name of a locale.
+
+ See the `Rust documentation for of <https://docs.rs/icu/latest/icu/displaynames/struct.LocaleDisplayNamesFormatter.html#method.of>`__ for more information.
+
+
+.. cpp:class:: ICU4XRegionDisplayNames
+
+ See the `Rust documentation for RegionDisplayNames <https://docs.rs/icu/latest/icu/displaynames/struct.RegionDisplayNames.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XRegionDisplayNames, ICU4XError> create(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Creates a new ``RegionDisplayNames`` from locale data and an options bag.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/displaynames/struct.RegionDisplayNames.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> of_to_writeable(const std::string_view region, W& write) const
+
+ Returns the locale specific display name of a region. Note that the funtion returns an empty string in case the display name for a given region code is not found.
+
+ See the `Rust documentation for of <https://docs.rs/icu/latest/icu/displaynames/struct.RegionDisplayNames.html#method.of>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> of(const std::string_view region) const
+
+ Returns the locale specific display name of a region. Note that the funtion returns an empty string in case the display name for a given region code is not found.
+
+ See the `Rust documentation for of <https://docs.rs/icu/latest/icu/displaynames/struct.RegionDisplayNames.html#method.of>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/errors_ffi.rst b/intl/icu_capi/cpp/docs/source/errors_ffi.rst
new file mode 100644
index 0000000000..a4a1346b15
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/errors_ffi.rst
@@ -0,0 +1,136 @@
+``errors::ffi``
+===============
+
+.. cpp:enum-struct:: ICU4XError
+
+ A common enum for errors that ICU4X may return, organized by API
+
+ The error names are stable and can be checked against as strings in the JS API
+
+ Additional information: `1 <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.FixedDecimalError.html>`__, `2 <https://docs.rs/icu/latest/icu/calendar/enum.CalendarError.html>`__, `3 <https://docs.rs/icu/latest/icu/collator/enum.CollatorError.html>`__, `4 <https://docs.rs/icu/latest/icu/datetime/enum.DateTimeError.html>`__, `5 <https://docs.rs/icu/latest/icu/decimal/enum.DecimalError.html>`__, `6 <https://docs.rs/icu/latest/icu/list/enum.ListError.html>`__, `7 <https://docs.rs/icu/latest/icu/locid/enum.ParserError.html>`__, `8 <https://docs.rs/icu/latest/icu/locid_transform/enum.LocaleTransformError.html>`__, `9 <https://docs.rs/icu/latest/icu/normalizer/enum.NormalizerError.html>`__, `10 <https://docs.rs/icu/latest/icu/plurals/enum.PluralsError.html>`__, `11 <https://docs.rs/icu/latest/icu/properties/enum.PropertiesError.html>`__, `12 <https://docs.rs/icu/latest/icu/provider/struct.DataError.html>`__, `13 <https://docs.rs/icu/latest/icu/provider/enum.DataErrorKind.html>`__, `14 <https://docs.rs/icu/latest/icu/segmenter/enum.SegmenterError.html>`__, `15 <https://docs.rs/icu/latest/icu/timezone/enum.TimeZoneError.html>`__
+
+
+ .. cpp:enumerator:: UnknownError
+
+ The error is not currently categorized as ICU4XError. Please file a bug
+
+
+ .. cpp:enumerator:: WriteableError
+
+ An error arising from writing to a string Typically found when not enough space is allocated Most APIs that return a string may return this error
+
+
+ .. cpp:enumerator:: OutOfBoundsError
+
+ .. cpp:enumerator:: DataMissingDataKeyError
+
+ .. cpp:enumerator:: DataMissingVariantError
+
+ .. cpp:enumerator:: DataMissingLocaleError
+
+ .. cpp:enumerator:: DataNeedsVariantError
+
+ .. cpp:enumerator:: DataNeedsLocaleError
+
+ .. cpp:enumerator:: DataExtraneousLocaleError
+
+ .. cpp:enumerator:: DataFilteredResourceError
+
+ .. cpp:enumerator:: DataMismatchedTypeError
+
+ .. cpp:enumerator:: DataMissingPayloadError
+
+ .. cpp:enumerator:: DataInvalidStateError
+
+ .. cpp:enumerator:: DataCustomError
+
+ .. cpp:enumerator:: DataIoError
+
+ .. cpp:enumerator:: DataUnavailableBufferFormatError
+
+ .. cpp:enumerator:: DataMismatchedAnyBufferError
+
+ .. cpp:enumerator:: LocaleUndefinedSubtagError
+
+ The subtag being requested was not set
+
+
+ .. cpp:enumerator:: LocaleParserLanguageError
+
+ The locale or subtag string failed to parse
+
+
+ .. cpp:enumerator:: LocaleParserSubtagError
+
+ .. cpp:enumerator:: LocaleParserExtensionError
+
+ .. cpp:enumerator:: DataStructValidityError
+
+ Attempted to construct an invalid data struct
+
+
+ .. cpp:enumerator:: PropertyUnknownScriptIdError
+
+ .. cpp:enumerator:: PropertyUnknownGeneralCategoryGroupError
+
+ .. cpp:enumerator:: PropertyUnexpectedPropertyNameError
+
+ .. cpp:enumerator:: FixedDecimalLimitError
+
+ .. cpp:enumerator:: FixedDecimalSyntaxError
+
+ .. cpp:enumerator:: PluralsParserError
+
+ .. cpp:enumerator:: CalendarParseError
+
+ .. cpp:enumerator:: CalendarOverflowError
+
+ .. cpp:enumerator:: CalendarUnderflowError
+
+ .. cpp:enumerator:: CalendarOutOfRangeError
+
+ .. cpp:enumerator:: CalendarUnknownEraError
+
+ .. cpp:enumerator:: CalendarUnknownMonthCodeError
+
+ .. cpp:enumerator:: CalendarMissingInputError
+
+ .. cpp:enumerator:: CalendarUnknownKindError
+
+ .. cpp:enumerator:: CalendarMissingError
+
+ .. cpp:enumerator:: DateTimePatternError
+
+ .. cpp:enumerator:: DateTimeMissingInputFieldError
+
+ .. cpp:enumerator:: DateTimeSkeletonError
+
+ .. cpp:enumerator:: DateTimeUnsupportedFieldError
+
+ .. cpp:enumerator:: DateTimeUnsupportedOptionsError
+
+ .. cpp:enumerator:: DateTimeMissingWeekdaySymbolError
+
+ .. cpp:enumerator:: DateTimeMissingMonthSymbolError
+
+ .. cpp:enumerator:: DateTimeFixedDecimalError
+
+ .. cpp:enumerator:: DateTimeMismatchedCalendarError
+
+ .. cpp:enumerator:: TinyStrTooLargeError
+
+ .. cpp:enumerator:: TinyStrContainsNullError
+
+ .. cpp:enumerator:: TinyStrNonAsciiError
+
+ .. cpp:enumerator:: TimeZoneOffsetOutOfBoundsError
+
+ .. cpp:enumerator:: TimeZoneInvalidOffsetError
+
+ .. cpp:enumerator:: TimeZoneMissingInputError
+
+ .. cpp:enumerator:: TimeZoneInvalidIdError
+
+ .. cpp:enumerator:: NormalizerFutureExtensionError
+
+ .. cpp:enumerator:: NormalizerValidationError
diff --git a/intl/icu_capi/cpp/docs/source/fallbacker_ffi.rst b/intl/icu_capi/cpp/docs/source/fallbacker_ffi.rst
new file mode 100644
index 0000000000..a4b17b785c
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/fallbacker_ffi.rst
@@ -0,0 +1,117 @@
+``fallbacker::ffi``
+===================
+
+.. cpp:struct:: ICU4XLocaleFallbackConfig
+
+ Collection of configurations for the ICU4X fallback algorithm.
+
+ See the `Rust documentation for LocaleFallbackConfig <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackConfig.html>`__ for more information.
+
+
+ .. cpp:member:: ICU4XLocaleFallbackPriority priority
+
+ Choice of priority mode.
+
+
+ .. cpp:member:: std::string_view extension_key
+
+ An empty string is considered ``None``.
+
+
+ .. cpp:member:: ICU4XLocaleFallbackSupplement fallback_supplement
+
+ Fallback supplement data key to customize fallback rules.
+
+
+.. cpp:class:: ICU4XLocaleFallbackIterator
+
+ An iterator over the locale under fallback.
+
+ See the `Rust documentation for LocaleFallbackIterator <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackIterator.html>`__ for more information.
+
+
+ .. cpp:function:: ICU4XLocale get() const
+
+ Gets a snapshot of the current state of the locale.
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackIterator.html#method.get>`__ for more information.
+
+
+ .. cpp:function:: void step()
+
+ Performs one step of the fallback algorithm, mutating the locale.
+
+ See the `Rust documentation for step <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackIterator.html#method.step>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XLocaleFallbackPriority
+
+ Priority mode for the ICU4X fallback algorithm.
+
+ See the `Rust documentation for LocaleFallbackPriority <https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackPriority.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Language
+
+ .. cpp:enumerator:: Region
+
+ .. cpp:enumerator:: Collation
+
+.. cpp:enum-struct:: ICU4XLocaleFallbackSupplement
+
+ What additional data is required to load when performing fallback.
+
+ See the `Rust documentation for LocaleFallbackSupplement <https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackSupplement.html>`__ for more information.
+
+
+ .. cpp:enumerator:: None
+
+ .. cpp:enumerator:: Collation
+
+.. cpp:class:: ICU4XLocaleFallbacker
+
+ An object that runs the ICU4X locale fallback algorithm.
+
+ See the `Rust documentation for LocaleFallbacker <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleFallbacker, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Creates a new ``ICU4XLocaleFallbacker`` from a data provider.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XLocaleFallbacker create_without_data()
+
+ Creates a new ``ICU4XLocaleFallbacker`` without data for limited functionality.
+
+ See the `Rust documentation for new_without_data <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html#method.new_without_data>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<ICU4XLocaleFallbackerWithConfig, ICU4XError> for_config(ICU4XLocaleFallbackConfig config) const
+
+ Associates this ``ICU4XLocaleFallbacker`` with configuration options.
+
+ See the `Rust documentation for for_config <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html#method.for_config>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+.. cpp:class:: ICU4XLocaleFallbackerWithConfig
+
+ An object that runs the ICU4X locale fallback algorithm with specific configurations.
+
+ See the `Rust documentation for LocaleFallbacker <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html>`__ for more information.
+
+ See the `Rust documentation for LocaleFallbackerWithConfig <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbackerWithConfig.html>`__ for more information.
+
+
+ .. cpp:function:: ICU4XLocaleFallbackIterator fallback_for_locale(const ICU4XLocale& locale) const
+
+ Creates an iterator from a locale with each step of fallback.
+
+ See the `Rust documentation for fallback_for <https://docs.rs/icu/latest/icu/locid_transform/fallback/struct.LocaleFallbacker.html#method.fallback_for>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
diff --git a/intl/icu_capi/cpp/docs/source/fixed_decimal_ffi.rst b/intl/icu_capi/cpp/docs/source/fixed_decimal_ffi.rst
new file mode 100644
index 0000000000..7adcddfc75
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/fixed_decimal_ffi.rst
@@ -0,0 +1,287 @@
+``fixed_decimal::ffi``
+======================
+
+.. cpp:class:: ICU4XFixedDecimal
+
+ See the `Rust documentation for FixedDecimal <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XFixedDecimal create_from_i32(int32_t v)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an integer.
+
+ See the `Rust documentation for FixedDecimal <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XFixedDecimal create_from_u32(uint32_t v)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an integer.
+
+ See the `Rust documentation for FixedDecimal <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XFixedDecimal create_from_i64(int64_t v)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an integer.
+
+ See the `Rust documentation for FixedDecimal <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XFixedDecimal create_from_u64(uint64_t v)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an integer.
+
+ See the `Rust documentation for FixedDecimal <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimal, ICU4XError> create_from_f64_with_integer_precision(double f)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an integer-valued float
+
+ See the `Rust documentation for try_from_f64 <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.try_from_f64>`__ for more information.
+
+ See the `Rust documentation for FloatPrecision <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.FloatPrecision.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimal, ICU4XError> create_from_f64_with_lower_magnitude(double f, int16_t magnitude)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an float, with a given power of 10 for the lower magnitude
+
+ See the `Rust documentation for try_from_f64 <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.try_from_f64>`__ for more information.
+
+ See the `Rust documentation for FloatPrecision <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.FloatPrecision.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimal, ICU4XError> create_from_f64_with_significant_digits(double f, uint8_t digits)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an float, for a given number of significant digits
+
+ See the `Rust documentation for try_from_f64 <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.try_from_f64>`__ for more information.
+
+ See the `Rust documentation for FloatPrecision <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.FloatPrecision.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimal, ICU4XError> create_from_f64_with_floating_precision(double f)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from an float, with enough digits to recover the original floating point in IEEE 754 without needing trailing zeros
+
+ See the `Rust documentation for try_from_f64 <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.try_from_f64>`__ for more information.
+
+ See the `Rust documentation for FloatPrecision <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.FloatPrecision.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XFixedDecimal, ICU4XError> create_from_string(const std::string_view v)
+
+ Construct an :cpp:class:`ICU4XFixedDecimal` from a string.
+
+ See the `Rust documentation for from_str <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.from_str>`__ for more information.
+
+
+ .. cpp:function:: uint8_t digit_at(int16_t magnitude) const
+
+ See the `Rust documentation for digit_at <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.digit_at>`__ for more information.
+
+
+ .. cpp:function:: int16_t magnitude_start() const
+
+ See the `Rust documentation for magnitude_range <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.magnitude_range>`__ for more information.
+
+
+ .. cpp:function:: int16_t magnitude_end() const
+
+ See the `Rust documentation for magnitude_range <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.magnitude_range>`__ for more information.
+
+
+ .. cpp:function:: int16_t nonzero_magnitude_start() const
+
+ See the `Rust documentation for nonzero_magnitude_start <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.nonzero_magnitude_start>`__ for more information.
+
+
+ .. cpp:function:: int16_t nonzero_magnitude_end() const
+
+ See the `Rust documentation for nonzero_magnitude_end <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.nonzero_magnitude_end>`__ for more information.
+
+
+ .. cpp:function:: bool is_zero() const
+
+ See the `Rust documentation for is_zero <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.is_zero>`__ for more information.
+
+
+ .. cpp:function:: void multiply_pow10(int16_t power)
+
+ Multiply the :cpp:class:`ICU4XFixedDecimal` by a given power of ten.
+
+ See the `Rust documentation for multiply_pow10 <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.multiply_pow10>`__ for more information.
+
+
+ .. cpp:function:: ICU4XFixedDecimalSign sign() const
+
+ See the `Rust documentation for sign <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.sign>`__ for more information.
+
+
+ .. cpp:function:: void set_sign(ICU4XFixedDecimalSign sign)
+
+ Set the sign of the :cpp:class:`ICU4XFixedDecimal`.
+
+ See the `Rust documentation for set_sign <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.set_sign>`__ for more information.
+
+
+ .. cpp:function:: void apply_sign_display(ICU4XFixedDecimalSignDisplay sign_display)
+
+ See the `Rust documentation for apply_sign_display <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.apply_sign_display>`__ for more information.
+
+
+ .. cpp:function:: void trim_start()
+
+ See the `Rust documentation for trim_start <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.trim_start>`__ for more information.
+
+
+ .. cpp:function:: void trim_end()
+
+ See the `Rust documentation for trim_end <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.trim_end>`__ for more information.
+
+
+ .. cpp:function:: void pad_start(int16_t position)
+
+ Zero-pad the :cpp:class:`ICU4XFixedDecimal` on the left to a particular position
+
+ See the `Rust documentation for pad_start <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.pad_start>`__ for more information.
+
+
+ .. cpp:function:: void pad_end(int16_t position)
+
+ Zero-pad the :cpp:class:`ICU4XFixedDecimal` on the right to a particular position
+
+ See the `Rust documentation for pad_end <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.pad_end>`__ for more information.
+
+
+ .. cpp:function:: void set_max_position(int16_t position)
+
+ Truncate the :cpp:class:`ICU4XFixedDecimal` on the left to a particular position, deleting digits if necessary. This is useful for, e.g. abbreviating years ("2022" -> "22")
+
+ See the `Rust documentation for set_max_position <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.set_max_position>`__ for more information.
+
+
+ .. cpp:function:: void trunc(int16_t position)
+
+ See the `Rust documentation for trunc <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.trunc>`__ for more information.
+
+
+ .. cpp:function:: void half_trunc(int16_t position)
+
+ See the `Rust documentation for half_trunc <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.half_trunc>`__ for more information.
+
+
+ .. cpp:function:: void expand(int16_t position)
+
+ See the `Rust documentation for expand <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.expand>`__ for more information.
+
+
+ .. cpp:function:: void half_expand(int16_t position)
+
+ See the `Rust documentation for half_expand <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.half_expand>`__ for more information.
+
+
+ .. cpp:function:: void ceil(int16_t position)
+
+ See the `Rust documentation for ceil <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.ceil>`__ for more information.
+
+
+ .. cpp:function:: void half_ceil(int16_t position)
+
+ See the `Rust documentation for half_ceil <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.half_ceil>`__ for more information.
+
+
+ .. cpp:function:: void floor(int16_t position)
+
+ See the `Rust documentation for floor <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.floor>`__ for more information.
+
+
+ .. cpp:function:: void half_floor(int16_t position)
+
+ See the `Rust documentation for half_floor <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.half_floor>`__ for more information.
+
+
+ .. cpp:function:: void half_even(int16_t position)
+
+ See the `Rust documentation for half_even <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.half_even>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, std::monostate> concatenate_end(ICU4XFixedDecimal& other)
+
+ Concatenates ``other`` to the end of ``self``.
+
+ If successful, ``other`` will be set to 0 and a successful status is returned.
+
+ If not successful, ``other`` will be unchanged and an error is returned.
+
+ See the `Rust documentation for concatenate_end <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.concatenate_end>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> void to_string_to_writeable(W& to) const
+
+ Format the :cpp:class:`ICU4XFixedDecimal` as a string.
+
+ See the `Rust documentation for write_to <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.write_to>`__ for more information.
+
+
+ .. cpp:function:: std::string to_string() const
+
+ Format the :cpp:class:`ICU4XFixedDecimal` as a string.
+
+ See the `Rust documentation for write_to <https://docs.rs/fixed_decimal/latest/fixed_decimal/struct.FixedDecimal.html#method.write_to>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XFixedDecimalSign
+
+ The sign of a FixedDecimal, as shown in formatting.
+
+ See the `Rust documentation for Sign <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.Sign.html>`__ for more information.
+
+
+ .. cpp:enumerator:: None
+
+ No sign (implicitly positive, e.g., 1729).
+
+
+ .. cpp:enumerator:: Negative
+
+ A negative sign, e.g., -1729.
+
+
+ .. cpp:enumerator:: Positive
+
+ An explicit positive sign, e.g., +1729.
+
+
+.. cpp:enum-struct:: ICU4XFixedDecimalSignDisplay
+
+ ECMA-402 compatible sign display preference.
+
+ See the `Rust documentation for SignDisplay <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.SignDisplay.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Auto
+
+ .. cpp:enumerator:: Never
+
+ .. cpp:enumerator:: Always
+
+ .. cpp:enumerator:: ExceptZero
+
+ .. cpp:enumerator:: Negative
+
+.. cpp:enum-struct:: ICU4XRoundingIncrement
+
+ Increment used in a rounding operation.
+
+ See the `Rust documentation for RoundingIncrement <https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.RoundingIncrement.html>`__ for more information.
+
+
+ .. cpp:enumerator:: MultiplesOf1
+
+ .. cpp:enumerator:: MultiplesOf2
+
+ .. cpp:enumerator:: MultiplesOf5
+
+ .. cpp:enumerator:: MultiplesOf25
diff --git a/intl/icu_capi/cpp/docs/source/iana_bcp47_mapper_ffi.rst b/intl/icu_capi/cpp/docs/source/iana_bcp47_mapper_ffi.rst
new file mode 100644
index 0000000000..a10006a04b
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/iana_bcp47_mapper_ffi.rst
@@ -0,0 +1,42 @@
+``iana_bcp47_mapper::ffi``
+==========================
+
+.. cpp:class:: ICU4XBcp47ToIanaMapper
+
+ An object capable of mapping from a BCP-47 time zone ID to an IANA ID.
+
+ See the `Rust documentation for IanaBcp47RoundTripMapper <https://docs.rs/icu/latest/icu/timezone/struct.IanaBcp47RoundTripMapper.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XBcp47ToIanaMapper, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/timezone/struct.IanaBcp47RoundTripMapper.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> get_to_writeable(const std::string_view value, W& write) const
+
+ Writes out the canonical IANA time zone ID corresponding to the given BCP-47 ID.
+
+ See the `Rust documentation for bcp47_to_iana <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.IanaBcp47RoundTripMapper.html#method.bcp47_to_iana>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> get(const std::string_view value) const
+
+ Writes out the canonical IANA time zone ID corresponding to the given BCP-47 ID.
+
+ See the `Rust documentation for bcp47_to_iana <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.IanaBcp47RoundTripMapper.html#method.bcp47_to_iana>`__ for more information.
+
+
+.. cpp:class:: ICU4XIanaToBcp47Mapper
+
+ An object capable of mapping from an IANA time zone ID to a BCP-47 ID.
+
+ This can be used via ``try_set_iana_time_zone_id()`` on ```ICU4XCustomTimeZone`` <crate::timezone::ffi::ICU4XCustomTimeZone>`__.
+
+ See the `Rust documentation for IanaToBcp47Mapper <https://docs.rs/icu/latest/icu/timezone/struct.IanaToBcp47Mapper.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XIanaToBcp47Mapper, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/timezone/struct.IanaToBcp47Mapper.html#method.new>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/index.rst b/intl/icu_capi/cpp/docs/source/index.rst
new file mode 100644
index 0000000000..57e246325f
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/index.rst
@@ -0,0 +1,54 @@
+Documentation
+=============
+
+.. toctree::
+ :maxdepth: 3
+ :caption: Modules:
+
+ bidi_ffi
+ calendar_ffi
+ casemap_ffi
+ collator_ffi
+ collections_sets_ffi
+ common_ffi
+ data_struct_ffi
+ date_ffi
+ datetime_ffi
+ datetime_formatter_ffi
+ decimal_ffi
+ displaynames_ffi
+ errors_ffi
+ fallbacker_ffi
+ fixed_decimal_ffi
+ iana_bcp47_mapper_ffi
+ list_ffi
+ locale_ffi
+ locale_directionality_ffi
+ locid_transform_ffi
+ logging_ffi
+ metazone_calculator_ffi
+ normalizer_ffi
+ normalizer_properties_ffi
+ pluralrules_ffi
+ properties_iter_ffi
+ properties_maps_ffi
+ properties_names_ffi
+ properties_sets_ffi
+ properties_unisets_ffi
+ provider_ffi
+ script_ffi
+ segmenter_grapheme_ffi
+ segmenter_line_ffi
+ segmenter_sentence_ffi
+ segmenter_word_ffi
+ time_ffi
+ timezone_ffi
+ timezone_formatter_ffi
+ week_ffi
+ zoned_formatter_ffi
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/intl/icu_capi/cpp/docs/source/list_ffi.rst b/intl/icu_capi/cpp/docs/source/list_ffi.rst
new file mode 100644
index 0000000000..f880a58887
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/list_ffi.rst
@@ -0,0 +1,76 @@
+``list::ffi``
+=============
+
+.. cpp:class:: ICU4XList
+
+ A list of strings
+
+
+ .. cpp:function:: static ICU4XList create()
+
+ Create a new list of strings
+
+
+ .. cpp:function:: static ICU4XList create_with_capacity(size_t capacity)
+
+ Create a new list of strings with preallocated space to hold at least ``capacity`` elements
+
+
+ .. cpp:function:: void push(const std::string_view val)
+
+ Push a string to the list
+
+ For C++ users, potentially invalid UTF8 will be handled via REPLACEMENT CHARACTERs
+
+
+ .. cpp:function:: size_t len() const
+
+ The number of elements in this list
+
+
+.. cpp:class:: ICU4XListFormatter
+
+ See the `Rust documentation for ListFormatter <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XListFormatter, ICU4XError> create_and_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XListLength length)
+
+ Construct a new ICU4XListFormatter instance for And patterns
+
+ See the `Rust documentation for try_new_and_with_length <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html#method.try_new_and_with_length>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XListFormatter, ICU4XError> create_or_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XListLength length)
+
+ Construct a new ICU4XListFormatter instance for And patterns
+
+ See the `Rust documentation for try_new_or_with_length <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html#method.try_new_or_with_length>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XListFormatter, ICU4XError> create_unit_with_length(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XListLength length)
+
+ Construct a new ICU4XListFormatter instance for And patterns
+
+ See the `Rust documentation for try_new_unit_with_length <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html#method.try_new_unit_with_length>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_to_writeable(const ICU4XList& list, W& write) const
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format(const ICU4XList& list) const
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/list/struct.ListFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XListLength
+
+ See the `Rust documentation for ListLength <https://docs.rs/icu/latest/icu/list/enum.ListLength.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Wide
+
+ .. cpp:enumerator:: Short
+
+ .. cpp:enumerator:: Narrow
diff --git a/intl/icu_capi/cpp/docs/source/locale_directionality_ffi.rst b/intl/icu_capi/cpp/docs/source/locale_directionality_ffi.rst
new file mode 100644
index 0000000000..3a051ac481
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/locale_directionality_ffi.rst
@@ -0,0 +1,47 @@
+``locale_directionality::ffi``
+==============================
+
+.. cpp:enum-struct:: ICU4XLocaleDirection
+
+ See the `Rust documentation for Direction <https://docs.rs/icu/latest/icu/locid_transform/enum.Direction.html>`__ for more information.
+
+
+ .. cpp:enumerator:: LeftToRight
+
+ .. cpp:enumerator:: RightToLeft
+
+ .. cpp:enumerator:: Unknown
+
+.. cpp:class:: ICU4XLocaleDirectionality
+
+ See the `Rust documentation for LocaleDirectionality <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleDirectionality, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XLocaleDirectionality instance
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleDirectionality, ICU4XError> create_with_expander(const ICU4XDataProvider& provider, const ICU4XLocaleExpander& expander)
+
+ Construct a new ICU4XLocaleDirectionality instance with a custom expander
+
+ See the `Rust documentation for new_with_expander <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html#method.new_with_expander>`__ for more information.
+
+
+ .. cpp:function:: ICU4XLocaleDirection get(const ICU4XLocale& locale) const
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html#method.get>`__ for more information.
+
+
+ .. cpp:function:: bool is_left_to_right(const ICU4XLocale& locale) const
+
+ See the `Rust documentation for is_left_to_right <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html#method.is_left_to_right>`__ for more information.
+
+
+ .. cpp:function:: bool is_right_to_left(const ICU4XLocale& locale) const
+
+ See the `Rust documentation for is_right_to_left <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleDirectionality.html#method.is_right_to_left>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/locale_ffi.rst b/intl/icu_capi/cpp/docs/source/locale_ffi.rst
new file mode 100644
index 0000000000..f65b658972
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/locale_ffi.rst
@@ -0,0 +1,179 @@
+``locale::ffi``
+===============
+
+.. cpp:class:: ICU4XLocale
+
+ An ICU4X Locale, capable of representing strings like ``"en-US"``.
+
+ See the `Rust documentation for Locale <https://docs.rs/icu/latest/icu/locid/struct.Locale.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocale, ICU4XError> create_from_string(const std::string_view name)
+
+ Construct an :cpp:class:`ICU4XLocale` from an locale identifier.
+
+ This will run the complete locale parsing algorithm. If code size and performance are critical and the locale is of a known shape (such as ``aa-BB``) use ``create_und``, ``set_language``, ``set_script``, and ``set_region``.
+
+ See the `Rust documentation for try_from_bytes <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.try_from_bytes>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XLocale create_und()
+
+ Construct a default undefined :cpp:class:`ICU4XLocale` "und".
+
+ See the `Rust documentation for UND <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#associatedconstant.UND>`__ for more information.
+
+
+ .. cpp:function:: ICU4XLocale clone() const
+
+ Clones the :cpp:class:`ICU4XLocale`.
+
+ See the `Rust documentation for Locale <https://docs.rs/icu/latest/icu/locid/struct.Locale.html>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> basename_to_writeable(W& write) const
+
+ Write a string representation of the ``LanguageIdentifier`` part of :cpp:class:`ICU4XLocale` to ``write``.
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> basename() const
+
+ Write a string representation of the ``LanguageIdentifier`` part of :cpp:class:`ICU4XLocale` to ``write``.
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> get_unicode_extension_to_writeable(const std::string_view bytes, W& write) const
+
+ Write a string representation of the unicode extension to ``write``
+
+ See the `Rust documentation for extensions <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.extensions>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> get_unicode_extension(const std::string_view bytes) const
+
+ Write a string representation of the unicode extension to ``write``
+
+ See the `Rust documentation for extensions <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.extensions>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> language_to_writeable(W& write) const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` language to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> language() const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` language to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> set_language(const std::string_view bytes)
+
+ Set the language part of the :cpp:class:`ICU4XLocale`.
+
+ See the `Rust documentation for try_from_bytes <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.try_from_bytes>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> region_to_writeable(W& write) const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` region to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> region() const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` region to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> set_region(const std::string_view bytes)
+
+ Set the region part of the :cpp:class:`ICU4XLocale`.
+
+ See the `Rust documentation for try_from_bytes <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.try_from_bytes>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> script_to_writeable(W& write) const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` script to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> script() const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` script to ``write``
+
+ See the `Rust documentation for id <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#structfield.id>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> set_script(const std::string_view bytes)
+
+ Set the script part of the :cpp:class:`ICU4XLocale`. Pass an empty string to remove the script.
+
+ See the `Rust documentation for try_from_bytes <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.try_from_bytes>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> static diplomat::result<std::monostate, ICU4XError> canonicalize_to_writeable(const std::string_view bytes, W& write)
+
+ Best effort locale canonicalizer that doesn't need any data
+
+ Use ICU4XLocaleCanonicalizer for better control and functionality
+
+ See the `Rust documentation for canonicalize <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.canonicalize>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<std::string, ICU4XError> canonicalize(const std::string_view bytes)
+
+ Best effort locale canonicalizer that doesn't need any data
+
+ Use ICU4XLocaleCanonicalizer for better control and functionality
+
+ See the `Rust documentation for canonicalize <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.canonicalize>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> to_string_to_writeable(W& write) const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` to ``write``
+
+ See the `Rust documentation for write_to <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.write_to>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> to_string() const
+
+ Write a string representation of :cpp:class:`ICU4XLocale` to ``write``
+
+ See the `Rust documentation for write_to <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.write_to>`__ for more information.
+
+
+ .. cpp:function:: bool normalizing_eq(const std::string_view other) const
+
+ See the `Rust documentation for normalizing_eq <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.normalizing_eq>`__ for more information.
+
+
+ .. cpp:function:: ICU4XOrdering strict_cmp(const std::string_view other) const
+
+ See the `Rust documentation for strict_cmp <https://docs.rs/icu/latest/icu/locid/struct.Locale.html#method.strict_cmp>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XLocale create_en()
+
+ Deprecated
+
+ Use `create_from_string("en").
+
+
+ .. cpp:function:: static ICU4XLocale create_bn()
+
+ Deprecated
+
+ Use `create_from_string("bn").
+
diff --git a/intl/icu_capi/cpp/docs/source/locid_transform_ffi.rst b/intl/icu_capi/cpp/docs/source/locid_transform_ffi.rst
new file mode 100644
index 0000000000..10d17a9cdf
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/locid_transform_ffi.rst
@@ -0,0 +1,76 @@
+``locid_transform::ffi``
+========================
+
+.. cpp:class:: ICU4XLocaleCanonicalizer
+
+ A locale canonicalizer.
+
+ See the `Rust documentation for LocaleCanonicalizer <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleCanonicalizer.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleCanonicalizer, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Create a new :cpp:class:`ICU4XLocaleCanonicalizer`.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleCanonicalizer.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleCanonicalizer, ICU4XError> create_extended(const ICU4XDataProvider& provider)
+
+ Create a new :cpp:class:`ICU4XLocaleCanonicalizer` with extended data.
+
+ See the `Rust documentation for new_with_expander <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleCanonicalizer.html#method.new_with_expander>`__ for more information.
+
+
+ .. cpp:function:: ICU4XTransformResult canonicalize(ICU4XLocale& locale) const
+
+ FFI version of ``LocaleCanonicalizer::canonicalize()``.
+
+ See the `Rust documentation for canonicalize <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleCanonicalizer.html#method.canonicalize>`__ for more information.
+
+
+.. cpp:class:: ICU4XLocaleExpander
+
+ A locale expander.
+
+ See the `Rust documentation for LocaleExpander <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleExpander.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleExpander, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Create a new :cpp:class:`ICU4XLocaleExpander`.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleExpander.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLocaleExpander, ICU4XError> create_extended(const ICU4XDataProvider& provider)
+
+ Create a new :cpp:class:`ICU4XLocaleExpander` with extended data.
+
+ See the `Rust documentation for new_extended <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleExpander.html#method.new_extended>`__ for more information.
+
+
+ .. cpp:function:: ICU4XTransformResult maximize(ICU4XLocale& locale) const
+
+ FFI version of ``LocaleExpander::maximize()``.
+
+ See the `Rust documentation for maximize <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleExpander.html#method.maximize>`__ for more information.
+
+
+ .. cpp:function:: ICU4XTransformResult minimize(ICU4XLocale& locale) const
+
+ FFI version of ``LocaleExpander::minimize()``.
+
+ See the `Rust documentation for minimize <https://docs.rs/icu/latest/icu/locid_transform/struct.LocaleExpander.html#method.minimize>`__ for more information.
+
+
+.. cpp:enum-struct:: ICU4XTransformResult
+
+ FFI version of ``TransformResult``.
+
+ See the `Rust documentation for TransformResult <https://docs.rs/icu/latest/icu/locid_transform/enum.TransformResult.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Modified
+
+ .. cpp:enumerator:: Unmodified
diff --git a/intl/icu_capi/cpp/docs/source/logging_ffi.rst b/intl/icu_capi/cpp/docs/source/logging_ffi.rst
new file mode 100644
index 0000000000..29c7e3d8fb
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/logging_ffi.rst
@@ -0,0 +1,21 @@
+``logging::ffi``
+================
+
+.. cpp:class:: ICU4XLogger
+
+ An object allowing control over the logging used
+
+
+ .. cpp:function:: static bool init_simple_logger()
+
+ Initialize the logger using ``simple_logger``
+
+ Requires the ``simple_logger`` Cargo feature.
+
+ Returns ``false`` if there was already a logger set.
+
+
+ .. cpp:function:: static bool init_console_logger()
+
+ Deprecated: since ICU4X 1.4, this now happens automatically if the ``log`` feature is enabled.
+
diff --git a/intl/icu_capi/cpp/docs/source/metazone_calculator_ffi.rst b/intl/icu_capi/cpp/docs/source/metazone_calculator_ffi.rst
new file mode 100644
index 0000000000..5cddfce650
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/metazone_calculator_ffi.rst
@@ -0,0 +1,16 @@
+``metazone_calculator::ffi``
+============================
+
+.. cpp:class:: ICU4XMetazoneCalculator
+
+ An object capable of computing the metazone from a timezone.
+
+ This can be used via ``maybe_calculate_metazone()`` on ```ICU4XCustomTimeZone`` <crate::timezone::ffi::ICU4XCustomTimeZone>`__.
+
+ See the `Rust documentation for MetazoneCalculator <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneCalculator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XMetazoneCalculator, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneCalculator.html#method.new>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/normalizer_ffi.rst b/intl/icu_capi/cpp/docs/source/normalizer_ffi.rst
new file mode 100644
index 0000000000..033cd4e71b
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/normalizer_ffi.rst
@@ -0,0 +1,94 @@
+``normalizer::ffi``
+===================
+
+.. cpp:class:: ICU4XComposingNormalizer
+
+ See the `Rust documentation for ComposingNormalizer <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XComposingNormalizer, ICU4XError> create_nfc(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XComposingNormalizer instance for NFC
+
+ See the `Rust documentation for new_nfc <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html#method.new_nfc>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XComposingNormalizer, ICU4XError> create_nfkc(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XComposingNormalizer instance for NFKC
+
+ See the `Rust documentation for new_nfkc <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html#method.new_nfkc>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> normalize_to_writeable(const std::string_view s, W& write) const
+
+ Normalize a (potentially ill-formed) UTF8 string
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for normalize_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html#method.normalize_utf8>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> normalize(const std::string_view s) const
+
+ Normalize a (potentially ill-formed) UTF8 string
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for normalize_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html#method.normalize_utf8>`__ for more information.
+
+
+ .. cpp:function:: bool is_normalized(const std::string_view s) const
+
+ Check if a (potentially ill-formed) UTF8 string is normalized
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for is_normalized_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.ComposingNormalizer.html#method.is_normalized_utf8>`__ for more information.
+
+
+.. cpp:class:: ICU4XDecomposingNormalizer
+
+ See the `Rust documentation for DecomposingNormalizer <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDecomposingNormalizer, ICU4XError> create_nfd(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XDecomposingNormalizer instance for NFC
+
+ See the `Rust documentation for new_nfd <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html#method.new_nfd>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDecomposingNormalizer, ICU4XError> create_nfkd(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XDecomposingNormalizer instance for NFKC
+
+ See the `Rust documentation for new_nfkd <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html#method.new_nfkd>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> normalize_to_writeable(const std::string_view s, W& write) const
+
+ Normalize a (potentially ill-formed) UTF8 string
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for normalize_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html#method.normalize_utf8>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> normalize(const std::string_view s) const
+
+ Normalize a (potentially ill-formed) UTF8 string
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for normalize_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html#method.normalize_utf8>`__ for more information.
+
+
+ .. cpp:function:: bool is_normalized(const std::string_view s) const
+
+ Check if a (potentially ill-formed) UTF8 string is normalized
+
+ Errors are mapped to REPLACEMENT CHARACTER
+
+ See the `Rust documentation for is_normalized_utf8 <https://docs.rs/icu/latest/icu/normalizer/struct.DecomposingNormalizer.html#method.is_normalized_utf8>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/normalizer_properties_ffi.rst b/intl/icu_capi/cpp/docs/source/normalizer_properties_ffi.rst
new file mode 100644
index 0000000000..57759a81ed
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/normalizer_properties_ffi.rst
@@ -0,0 +1,87 @@
+``normalizer_properties::ffi``
+==============================
+
+.. cpp:class:: ICU4XCanonicalCombiningClassMap
+
+ Lookup of the Canonical_Combining_Class Unicode property
+
+ See the `Rust documentation for CanonicalCombiningClassMap <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalCombiningClassMap.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCanonicalCombiningClassMap, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XCanonicalCombiningClassMap instance for NFC
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalCombiningClassMap.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: uint8_t get(char32_t ch) const
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalCombiningClassMap.html#method.get>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/properties/properties/struct.CanonicalCombiningClass.html>`__
+
+
+ .. cpp:function:: uint8_t get32(uint32_t ch) const
+
+ See the `Rust documentation for get32 <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalCombiningClassMap.html#method.get32>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/properties/properties/struct.CanonicalCombiningClass.html>`__
+
+
+.. cpp:class:: ICU4XCanonicalComposition
+
+ The raw canonical composition operation.
+
+ Callers should generally use ICU4XComposingNormalizer unless they specifically need raw composition operations
+
+ See the `Rust documentation for CanonicalComposition <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalComposition.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCanonicalComposition, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XCanonicalComposition instance for NFC
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalComposition.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: char32_t compose(char32_t starter, char32_t second) const
+
+ Performs canonical composition (including Hangul) on a pair of characters or returns NUL if these characters don’t compose. Composition exclusions are taken into account.
+
+ See the `Rust documentation for compose <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalComposition.html#method.compose>`__ for more information.
+
+
+.. cpp:class:: ICU4XCanonicalDecomposition
+
+ The raw (non-recursive) canonical decomposition operation.
+
+ Callers should generally use ICU4XDecomposingNormalizer unless they specifically need raw composition operations
+
+ See the `Rust documentation for CanonicalDecomposition <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalDecomposition.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCanonicalDecomposition, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct a new ICU4XCanonicalDecomposition instance for NFC
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalDecomposition.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XDecomposed decompose(char32_t c) const
+
+ Performs non-recursive canonical decomposition (including for Hangul).
+
+ See the `Rust documentation for decompose <https://docs.rs/icu/latest/icu/normalizer/properties/struct.CanonicalDecomposition.html#method.decompose>`__ for more information.
+
+
+.. cpp:struct:: ICU4XDecomposed
+
+ The outcome of non-recursive canonical decomposition of a character. ``second`` will be NUL when the decomposition expands to a single character (which may or may not be the original one)
+
+ See the `Rust documentation for Decomposed <https://docs.rs/icu/latest/icu/normalizer/properties/enum.Decomposed.html>`__ for more information.
+
+
+ .. cpp:member:: char32_t first
+
+ .. cpp:member:: char32_t second
diff --git a/intl/icu_capi/cpp/docs/source/pluralrules_ffi.rst b/intl/icu_capi/cpp/docs/source/pluralrules_ffi.rst
new file mode 100644
index 0000000000..80a01d258a
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/pluralrules_ffi.rst
@@ -0,0 +1,96 @@
+``pluralrules::ffi``
+====================
+
+.. cpp:struct:: ICU4XPluralCategories
+
+ FFI version of ``PluralRules::categories()`` data.
+
+
+ .. cpp:member:: bool zero
+
+ .. cpp:member:: bool one
+
+ .. cpp:member:: bool two
+
+ .. cpp:member:: bool few
+
+ .. cpp:member:: bool many
+
+ .. cpp:member:: bool other
+
+.. cpp:enum-struct:: ICU4XPluralCategory
+
+ FFI version of ``PluralCategory``.
+
+ See the `Rust documentation for PluralCategory <https://docs.rs/icu/latest/icu/plurals/enum.PluralCategory.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Zero
+
+ .. cpp:enumerator:: One
+
+ .. cpp:enumerator:: Two
+
+ .. cpp:enumerator:: Few
+
+ .. cpp:enumerator:: Many
+
+ .. cpp:enumerator:: Other
+
+ .. cpp:function:: static diplomat::result<ICU4XPluralCategory, std::monostate> get_for_cldr_string(const std::string_view s)
+
+ Construct from a string in the format `specified in TR35 <https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules>`__
+
+ See the `Rust documentation for get_for_cldr_string <https://docs.rs/icu/latest/icu/plurals/enum.PluralCategory.html#method.get_for_cldr_string>`__ for more information.
+
+ See the `Rust documentation for get_for_cldr_bytes <https://docs.rs/icu/latest/icu/plurals/enum.PluralCategory.html#method.get_for_cldr_bytes>`__ for more information.
+
+
+.. cpp:class:: ICU4XPluralOperands
+
+ FFI version of ``PluralOperands``.
+
+ See the `Rust documentation for PluralOperands <https://docs.rs/icu/latest/icu/plurals/struct.PluralOperands.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPluralOperands, ICU4XError> create_from_string(const std::string_view s)
+
+ Construct for a given string representing a number
+
+ See the `Rust documentation for from_str <https://docs.rs/icu/latest/icu/plurals/struct.PluralOperands.html#method.from_str>`__ for more information.
+
+
+.. cpp:class:: ICU4XPluralRules
+
+ FFI version of ``PluralRules``.
+
+ See the `Rust documentation for PluralRules <https://docs.rs/icu/latest/icu/plurals/struct.PluralRules.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPluralRules, ICU4XError> create_cardinal(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Construct an :cpp:class:`ICU4XPluralRules` for the given locale, for cardinal numbers
+
+ See the `Rust documentation for try_new_cardinal <https://docs.rs/icu/latest/icu/plurals/struct.PluralRules.html#method.try_new_cardinal>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPluralRules, ICU4XError> create_ordinal(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Construct an :cpp:class:`ICU4XPluralRules` for the given locale, for ordinal numbers
+
+ See the `Rust documentation for try_new_ordinal <https://docs.rs/icu/latest/icu/plurals/struct.PluralRules.html#method.try_new_ordinal>`__ for more information.
+
+
+ .. cpp:function:: ICU4XPluralCategory category_for(const ICU4XPluralOperands& op) const
+
+ Get the category for a given number represented as operands
+
+ See the `Rust documentation for category_for <https://docs.rs/icu/latest/icu/plurals/struct.PluralRules.html#method.category_for>`__ for more information.
+
+
+ .. cpp:function:: ICU4XPluralCategories categories() const
+
+ Get all of the categories needed in the current locale
+
+ See the `Rust documentation for categories <https://docs.rs/icu/latest/icu/plurals/struct.PluralRules.html#method.categories>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/properties_iter_ffi.rst b/intl/icu_capi/cpp/docs/source/properties_iter_ffi.rst
new file mode 100644
index 0000000000..b96d80b3c7
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/properties_iter_ffi.rst
@@ -0,0 +1,27 @@
+``properties_iter::ffi``
+========================
+
+.. cpp:class:: CodePointRangeIterator
+
+ An iterator over code point ranges, produced by ``ICU4XCodePointSetData`` or one of the ``ICU4XCodePointMapData`` types
+
+
+ .. cpp:function:: CodePointRangeIteratorResult next()
+
+ Advance the iterator by one and return the next range.
+
+ If the iterator is out of items, ``done`` will be true
+
+
+.. cpp:struct:: CodePointRangeIteratorResult
+
+ Result of a single iteration of :cpp:class:`CodePointRangeIterator`. Logically can be considered to be an ``Option<RangeInclusive<u32>>``,
+
+ ``start`` and ``end`` represent an inclusive range of code points start, end, and ``done`` will be true if the iterator has already finished. The last contentful iteration will NOT produce a range done=true, in other words ``start`` and ``end`` are useful values if and only if ``done=false``.
+
+
+ .. cpp:member:: uint32_t start
+
+ .. cpp:member:: uint32_t end
+
+ .. cpp:member:: bool done
diff --git a/intl/icu_capi/cpp/docs/source/properties_maps_ffi.rst b/intl/icu_capi/cpp/docs/source/properties_maps_ffi.rst
new file mode 100644
index 0000000000..200c95427d
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/properties_maps_ffi.rst
@@ -0,0 +1,169 @@
+``properties_maps::ffi``
+========================
+
+.. cpp:class:: ICU4XCodePointMapData16
+
+ An ICU4X Unicode Map Property object, capable of querying whether a code point (key) to obtain the Unicode property value, for a specific Unicode property.
+
+ For properties whose values fit into 16 bits.
+
+ See the `Rust documentation for properties <https://docs.rs/icu/latest/icu/properties/index.html>`__ for more information.
+
+ See the `Rust documentation for CodePointMapData <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapData.html>`__ for more information.
+
+ See the `Rust documentation for CodePointMapDataBorrowed <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: uint16_t get(char32_t cp) const
+
+ Gets the value for a code point.
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.get>`__ for more information.
+
+
+ .. cpp:function:: uint16_t get32(uint32_t cp) const
+
+ Gets the value for a code point (specified as a 32 bit integer, in UTF-32)
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_value(uint16_t value) const
+
+ Produces an iterator over ranges of code points that map to ``value``
+
+ See the `Rust documentation for iter_ranges_for_value <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.iter_ranges_for_value>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_value_complemented(uint16_t value) const
+
+ Produces an iterator over ranges of code points that do not map to ``value``
+
+ See the `Rust documentation for iter_ranges_for_value_complemented <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.iter_ranges_for_value_complemented>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XCodePointSetData get_set_for_value(uint16_t value) const
+
+ Gets a :cpp:class:`ICU4XCodePointSetData` representing all entries in this map that map to the given value
+
+ See the `Rust documentation for get_set_for_value <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.get_set_for_value>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData16, ICU4XError> load_script(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for script <https://docs.rs/icu/latest/icu/properties/maps/fn.script.html>`__ for more information.
+
+
+.. cpp:class:: ICU4XCodePointMapData8
+
+ An ICU4X Unicode Map Property object, capable of querying whether a code point (key) to obtain the Unicode property value, for a specific Unicode property.
+
+ For properties whose values fit into 8 bits.
+
+ See the `Rust documentation for properties <https://docs.rs/icu/latest/icu/properties/index.html>`__ for more information.
+
+ See the `Rust documentation for CodePointMapData <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapData.html>`__ for more information.
+
+ See the `Rust documentation for CodePointMapDataBorrowed <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: uint8_t get(char32_t cp) const
+
+ Gets the value for a code point.
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.get>`__ for more information.
+
+
+ .. cpp:function:: uint8_t get32(uint32_t cp) const
+
+ Gets the value for a code point (specified as a 32 bit integer, in UTF-32)
+
+
+ .. cpp:function:: static uint32_t general_category_to_mask(uint8_t gc)
+
+ Converts a general category to its corresponding mask value
+
+ Nonexistant general categories will map to the empty mask
+
+ See the `Rust documentation for GeneralCategoryGroup <https://docs.rs/icu/latest/icu/properties/struct.GeneralCategoryGroup.html>`__ for more information.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_value(uint8_t value) const
+
+ Produces an iterator over ranges of code points that map to ``value``
+
+ See the `Rust documentation for iter_ranges_for_value <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.iter_ranges_for_value>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_value_complemented(uint8_t value) const
+
+ Produces an iterator over ranges of code points that do not map to ``value``
+
+ See the `Rust documentation for iter_ranges_for_value_complemented <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.iter_ranges_for_value_complemented>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_mask(uint32_t mask) const
+
+ Given a mask value (the nth bit marks property value = n), produce an iterator over ranges of code points whose property values are contained in the mask.
+
+ The main mask property supported is that for General_Category, which can be obtained via ``general_category_to_mask()`` or by using ``ICU4XGeneralCategoryNameToMaskMapper``
+
+ Should only be used on maps for properties with values less than 32 (like Generak_Category), other maps will have unpredictable results
+
+ See the `Rust documentation for iter_ranges_for_group <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.iter_ranges_for_group>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XCodePointSetData get_set_for_value(uint8_t value) const
+
+ Gets a :cpp:class:`ICU4XCodePointSetData` representing all entries in this map that map to the given value
+
+ See the `Rust documentation for get_set_for_value <https://docs.rs/icu/latest/icu/properties/maps/struct.CodePointMapDataBorrowed.html#method.get_set_for_value>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_general_category(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for general_category <https://docs.rs/icu/latest/icu/properties/maps/fn.general_category.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_bidi_class(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for bidi_class <https://docs.rs/icu/latest/icu/properties/maps/fn.bidi_class.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_east_asian_width(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for east_asian_width <https://docs.rs/icu/latest/icu/properties/maps/fn.east_asian_width.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_indic_syllabic_category(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for indic_syllabic_category <https://docs.rs/icu/latest/icu/properties/maps/fn.indic_syllabic_category.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_line_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for line_break <https://docs.rs/icu/latest/icu/properties/maps/fn.line_break.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> try_grapheme_cluster_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for grapheme_cluster_break <https://docs.rs/icu/latest/icu/properties/maps/fn.grapheme_cluster_break.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_word_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for word_break <https://docs.rs/icu/latest/icu/properties/maps/fn.word_break.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointMapData8, ICU4XError> load_sentence_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for sentence_break <https://docs.rs/icu/latest/icu/properties/maps/fn.sentence_break.html>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/properties_names_ffi.rst b/intl/icu_capi/cpp/docs/source/properties_names_ffi.rst
new file mode 100644
index 0000000000..2ae5d9e4eb
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/properties_names_ffi.rst
@@ -0,0 +1,102 @@
+``properties_names::ffi``
+=========================
+
+.. cpp:class:: ICU4XGeneralCategoryNameToMaskMapper
+
+ A type capable of looking up General Category mask values from a string name.
+
+ See the `Rust documentation for get_name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.GeneralCategoryGroup.html#method.get_name_to_enum_mapper>`__ for more information.
+
+ See the `Rust documentation for PropertyValueNameToEnumMapper <https://docs.rs/icu/latest/icu/properties/names/struct.PropertyValueNameToEnumMapper.html>`__ for more information.
+
+
+ .. cpp:function:: uint32_t get_strict(const std::string_view name) const
+
+ Get the mask value matching the given name, using strict matching
+
+ Returns 0 if the name is unknown for this property
+
+
+ .. cpp:function:: uint32_t get_loose(const std::string_view name) const
+
+ Get the mask value matching the given name, using loose matching
+
+ Returns 0 if the name is unknown for this property
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGeneralCategoryNameToMaskMapper, ICU4XError> load(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for get_name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.GeneralCategoryGroup.html#method.get_name_to_enum_mapper>`__ for more information.
+
+
+.. cpp:class:: ICU4XPropertyValueNameToEnumMapper
+
+ A type capable of looking up a property value from a string name.
+
+ See the `Rust documentation for PropertyValueNameToEnumMapper <https://docs.rs/icu/latest/icu/properties/names/struct.PropertyValueNameToEnumMapper.html>`__ for more information.
+
+ See the `Rust documentation for PropertyValueNameToEnumMapperBorrowed <https://docs.rs/icu/latest/icu/properties/names/struct.PropertyValueNameToEnumMapperBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: int16_t get_strict(const std::string_view name) const
+
+ Get the property value matching the given name, using strict matching
+
+ Returns -1 if the name is unknown for this property
+
+ See the `Rust documentation for get_strict <https://docs.rs/icu/latest/icu/properties/names/struct.PropertyValueNameToEnumMapperBorrowed.html#method.get_strict>`__ for more information.
+
+
+ .. cpp:function:: int16_t get_loose(const std::string_view name) const
+
+ Get the property value matching the given name, using loose matching
+
+ Returns -1 if the name is unknown for this property
+
+ See the `Rust documentation for get_loose <https://docs.rs/icu/latest/icu/properties/names/struct.PropertyValueNameToEnumMapperBorrowed.html#method.get_loose>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_general_category(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for get_name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.GeneralCategory.html#method.get_name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_bidi_class(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.BidiClass.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_east_asian_width(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.EastAsianWidth.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_indic_syllabic_category(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.IndicSyllabicCategory.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_line_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.LineBreak.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_grapheme_cluster_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for get_name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.GraphemeClusterBreak.html#method.get_name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_word_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.WordBreak.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_sentence_break(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.SentenceBreak.html#method.name_to_enum_mapper>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XPropertyValueNameToEnumMapper, ICU4XError> load_script(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for name_to_enum_mapper <https://docs.rs/icu/latest/icu/properties/struct.Script.html#method.name_to_enum_mapper>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/properties_sets_ffi.rst b/intl/icu_capi/cpp/docs/source/properties_sets_ffi.rst
new file mode 100644
index 0000000000..287307a6c2
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/properties_sets_ffi.rst
@@ -0,0 +1,384 @@
+``properties_sets::ffi``
+========================
+
+.. cpp:class:: ICU4XCodePointSetData
+
+ An ICU4X Unicode Set Property object, capable of querying whether a code point is contained in a set based on a Unicode property.
+
+ See the `Rust documentation for properties <https://docs.rs/icu/latest/icu/properties/index.html>`__ for more information.
+
+ See the `Rust documentation for CodePointSetData <https://docs.rs/icu/latest/icu/properties/sets/struct.CodePointSetData.html>`__ for more information.
+
+ See the `Rust documentation for CodePointSetDataBorrowed <https://docs.rs/icu/latest/icu/properties/sets/struct.CodePointSetDataBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: bool contains(char32_t cp) const
+
+ Checks whether the code point is in the set.
+
+ See the `Rust documentation for contains <https://docs.rs/icu/latest/icu/properties/sets/struct.CodePointSetDataBorrowed.html#method.contains>`__ for more information.
+
+
+ .. cpp:function:: bool contains32(uint32_t cp) const
+
+ Checks whether the code point (specified as a 32 bit integer, in UTF-32) is in the set.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges() const
+
+ Produces an iterator over ranges of code points contained in this set
+
+ See the `Rust documentation for iter_ranges <https://docs.rs/icu/latest/icu/properties/sets/struct.CodePointSetDataBorrowed.html#method.iter_ranges>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_complemented() const
+
+ Produces an iterator over ranges of code points not contained in this set
+
+ See the `Rust documentation for iter_ranges_complemented <https://docs.rs/icu/latest/icu/properties/sets/struct.CodePointSetDataBorrowed.html#method.iter_ranges_complemented>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_for_general_category_group(const ICU4XDataProvider& provider, uint32_t group)
+
+ which is a mask with the same format as the ``U_GC_XX_MASK`` mask in ICU4C
+
+ See the `Rust documentation for for_general_category_group <https://docs.rs/icu/latest/icu/properties/sets/fn.for_general_category_group.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_ascii_hex_digit(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for ascii_hex_digit <https://docs.rs/icu/latest/icu/properties/sets/fn.ascii_hex_digit.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_alnum(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for alnum <https://docs.rs/icu/latest/icu/properties/sets/fn.alnum.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_alphabetic(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for alphabetic <https://docs.rs/icu/latest/icu/properties/sets/fn.alphabetic.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_bidi_control(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for bidi_control <https://docs.rs/icu/latest/icu/properties/sets/fn.bidi_control.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_bidi_mirrored(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for bidi_mirrored <https://docs.rs/icu/latest/icu/properties/sets/fn.bidi_mirrored.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_blank(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for blank <https://docs.rs/icu/latest/icu/properties/sets/fn.blank.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_cased(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for cased <https://docs.rs/icu/latest/icu/properties/sets/fn.cased.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_case_ignorable(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for case_ignorable <https://docs.rs/icu/latest/icu/properties/sets/fn.case_ignorable.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_full_composition_exclusion(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for full_composition_exclusion <https://docs.rs/icu/latest/icu/properties/sets/fn.full_composition_exclusion.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_casefolded(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_casefolded <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_casefolded.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_casemapped(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_casemapped <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_casemapped.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_nfkc_casefolded(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_nfkc_casefolded <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_nfkc_casefolded.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_lowercased(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_lowercased <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_lowercased.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_titlecased(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_titlecased <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_titlecased.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_changes_when_uppercased(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for changes_when_uppercased <https://docs.rs/icu/latest/icu/properties/sets/fn.changes_when_uppercased.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_dash(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for dash <https://docs.rs/icu/latest/icu/properties/sets/fn.dash.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_deprecated(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for deprecated <https://docs.rs/icu/latest/icu/properties/sets/fn.deprecated.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_default_ignorable_code_point(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for default_ignorable_code_point <https://docs.rs/icu/latest/icu/properties/sets/fn.default_ignorable_code_point.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_diacritic(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for diacritic <https://docs.rs/icu/latest/icu/properties/sets/fn.diacritic.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_emoji_modifier_base(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for emoji_modifier_base <https://docs.rs/icu/latest/icu/properties/sets/fn.emoji_modifier_base.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_emoji_component(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for emoji_component <https://docs.rs/icu/latest/icu/properties/sets/fn.emoji_component.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_emoji_modifier(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for emoji_modifier <https://docs.rs/icu/latest/icu/properties/sets/fn.emoji_modifier.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_emoji(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for emoji <https://docs.rs/icu/latest/icu/properties/sets/fn.emoji.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_emoji_presentation(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for emoji_presentation <https://docs.rs/icu/latest/icu/properties/sets/fn.emoji_presentation.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_extender(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for extender <https://docs.rs/icu/latest/icu/properties/sets/fn.extender.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_extended_pictographic(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for extended_pictographic <https://docs.rs/icu/latest/icu/properties/sets/fn.extended_pictographic.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_graph(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for graph <https://docs.rs/icu/latest/icu/properties/sets/fn.graph.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_grapheme_base(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for grapheme_base <https://docs.rs/icu/latest/icu/properties/sets/fn.grapheme_base.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_grapheme_extend(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for grapheme_extend <https://docs.rs/icu/latest/icu/properties/sets/fn.grapheme_extend.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_grapheme_link(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for grapheme_link <https://docs.rs/icu/latest/icu/properties/sets/fn.grapheme_link.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_hex_digit(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for hex_digit <https://docs.rs/icu/latest/icu/properties/sets/fn.hex_digit.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_hyphen(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for hyphen <https://docs.rs/icu/latest/icu/properties/sets/fn.hyphen.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_id_continue(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for id_continue <https://docs.rs/icu/latest/icu/properties/sets/fn.id_continue.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_ideographic(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for ideographic <https://docs.rs/icu/latest/icu/properties/sets/fn.ideographic.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_id_start(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for id_start <https://docs.rs/icu/latest/icu/properties/sets/fn.id_start.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_ids_binary_operator(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for ids_binary_operator <https://docs.rs/icu/latest/icu/properties/sets/fn.ids_binary_operator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_ids_trinary_operator(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for ids_trinary_operator <https://docs.rs/icu/latest/icu/properties/sets/fn.ids_trinary_operator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_join_control(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for join_control <https://docs.rs/icu/latest/icu/properties/sets/fn.join_control.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_logical_order_exception(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for logical_order_exception <https://docs.rs/icu/latest/icu/properties/sets/fn.logical_order_exception.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_lowercase(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for lowercase <https://docs.rs/icu/latest/icu/properties/sets/fn.lowercase.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_math(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for math <https://docs.rs/icu/latest/icu/properties/sets/fn.math.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_noncharacter_code_point(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for noncharacter_code_point <https://docs.rs/icu/latest/icu/properties/sets/fn.noncharacter_code_point.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_nfc_inert(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for nfc_inert <https://docs.rs/icu/latest/icu/properties/sets/fn.nfc_inert.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_nfd_inert(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for nfd_inert <https://docs.rs/icu/latest/icu/properties/sets/fn.nfd_inert.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_nfkc_inert(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for nfkc_inert <https://docs.rs/icu/latest/icu/properties/sets/fn.nfkc_inert.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_nfkd_inert(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for nfkd_inert <https://docs.rs/icu/latest/icu/properties/sets/fn.nfkd_inert.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_pattern_syntax(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for pattern_syntax <https://docs.rs/icu/latest/icu/properties/sets/fn.pattern_syntax.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_pattern_white_space(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for pattern_white_space <https://docs.rs/icu/latest/icu/properties/sets/fn.pattern_white_space.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_prepended_concatenation_mark(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for prepended_concatenation_mark <https://docs.rs/icu/latest/icu/properties/sets/fn.prepended_concatenation_mark.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_print(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for print <https://docs.rs/icu/latest/icu/properties/sets/fn.print.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_quotation_mark(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for quotation_mark <https://docs.rs/icu/latest/icu/properties/sets/fn.quotation_mark.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_radical(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for radical <https://docs.rs/icu/latest/icu/properties/sets/fn.radical.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_regional_indicator(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for regional_indicator <https://docs.rs/icu/latest/icu/properties/sets/fn.regional_indicator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_soft_dotted(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for soft_dotted <https://docs.rs/icu/latest/icu/properties/sets/fn.soft_dotted.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_segment_starter(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for segment_starter <https://docs.rs/icu/latest/icu/properties/sets/fn.segment_starter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_case_sensitive(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for case_sensitive <https://docs.rs/icu/latest/icu/properties/sets/fn.case_sensitive.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_sentence_terminal(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for sentence_terminal <https://docs.rs/icu/latest/icu/properties/sets/fn.sentence_terminal.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_terminal_punctuation(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for terminal_punctuation <https://docs.rs/icu/latest/icu/properties/sets/fn.terminal_punctuation.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_unified_ideograph(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for unified_ideograph <https://docs.rs/icu/latest/icu/properties/sets/fn.unified_ideograph.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_uppercase(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for uppercase <https://docs.rs/icu/latest/icu/properties/sets/fn.uppercase.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_variation_selector(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for variation_selector <https://docs.rs/icu/latest/icu/properties/sets/fn.variation_selector.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_white_space(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for white_space <https://docs.rs/icu/latest/icu/properties/sets/fn.white_space.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_xdigit(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for xdigit <https://docs.rs/icu/latest/icu/properties/sets/fn.xdigit.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_xid_continue(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for xid_continue <https://docs.rs/icu/latest/icu/properties/sets/fn.xid_continue.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_xid_start(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for xid_start <https://docs.rs/icu/latest/icu/properties/sets/fn.xid_start.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCodePointSetData, ICU4XError> load_for_ecma262(const ICU4XDataProvider& provider, const std::string_view property_name)
+
+ Loads data for a property specified as a string as long as it is one of the `ECMA-262 binary properties <https://tc39.es/ecma262/#table-binary-unicode-properties>`__ (not including Any, ASCII, and Assigned pseudoproperties).
+
+ Returns ``ICU4XError::PropertyUnexpectedPropertyNameError`` in case the string does not match any property in the list
+
+ See the `Rust documentation for for_ecma262 <https://docs.rs/icu/latest/icu/properties/sets/fn.for_ecma262.html>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/properties_unisets_ffi.rst b/intl/icu_capi/cpp/docs/source/properties_unisets_ffi.rst
new file mode 100644
index 0000000000..fcbde264a2
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/properties_unisets_ffi.rst
@@ -0,0 +1,62 @@
+``properties_unisets::ffi``
+===========================
+
+.. cpp:class:: ICU4XUnicodeSetData
+
+ An ICU4X Unicode Set Property object, capable of querying whether a code point is contained in a set based on a Unicode property.
+
+ See the `Rust documentation for properties <https://docs.rs/icu/latest/icu/properties/index.html>`__ for more information.
+
+ See the `Rust documentation for UnicodeSetData <https://docs.rs/icu/latest/icu/properties/sets/struct.UnicodeSetData.html>`__ for more information.
+
+ See the `Rust documentation for UnicodeSetDataBorrowed <https://docs.rs/icu/latest/icu/properties/sets/struct.UnicodeSetDataBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: bool contains(const std::string_view s) const
+
+ Checks whether the string is in the set.
+
+ See the `Rust documentation for contains <https://docs.rs/icu/latest/icu/properties/sets/struct.UnicodeSetDataBorrowed.html#method.contains>`__ for more information.
+
+
+ .. cpp:function:: bool contains_char(char32_t cp) const
+
+ Checks whether the code point is in the set.
+
+ See the `Rust documentation for contains_char <https://docs.rs/icu/latest/icu/properties/sets/struct.UnicodeSetDataBorrowed.html#method.contains_char>`__ for more information.
+
+
+ .. cpp:function:: bool contains32(uint32_t cp) const
+
+ Checks whether the code point (specified as a 32 bit integer, in UTF-32) is in the set.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_basic_emoji(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for basic_emoji <https://docs.rs/icu/latest/icu/properties/sets/fn.basic_emoji.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_exemplars_main(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ See the `Rust documentation for exemplars_main <https://docs.rs/icu/latest/icu/properties/exemplar_chars/fn.exemplars_main.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_exemplars_auxiliary(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ See the `Rust documentation for exemplars_auxiliary <https://docs.rs/icu/latest/icu/properties/exemplar_chars/fn.exemplars_auxiliary.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_exemplars_punctuation(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ See the `Rust documentation for exemplars_punctuation <https://docs.rs/icu/latest/icu/properties/exemplar_chars/fn.exemplars_punctuation.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_exemplars_numbers(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ See the `Rust documentation for exemplars_numbers <https://docs.rs/icu/latest/icu/properties/exemplar_chars/fn.exemplars_numbers.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XUnicodeSetData, ICU4XError> load_exemplars_index(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ See the `Rust documentation for exemplars_index <https://docs.rs/icu/latest/icu/properties/exemplar_chars/fn.exemplars_index.html>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/provider_ffi.rst b/intl/icu_capi/cpp/docs/source/provider_ffi.rst
new file mode 100644
index 0000000000..fcd53586cd
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/provider_ffi.rst
@@ -0,0 +1,84 @@
+``provider::ffi``
+=================
+
+.. cpp:class:: ICU4XDataProvider
+
+ An ICU4X data provider, capable of loading ICU4X data keys from some source.
+
+ See the `Rust documentation for icu_provider <https://docs.rs/icu_provider/latest/icu_provider/index.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XDataProvider create_compiled()
+
+ Constructs an :cpp:class:`ICU4XDataProvider` that uses compiled data.
+
+ Requires the ``compiled_data`` feature.
+
+ This provider cannot be modified or combined with other providers, so ``enable_fallback``, ``enabled_fallback_with``, ``fork_by_locale``, and ``fork_by_key`` will return ``Err``s.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDataProvider, ICU4XError> create_fs(const std::string_view path)
+
+ Constructs an ``FsDataProvider`` and returns it as an :cpp:class:`ICU4XDataProvider`. Requires the ``provider_fs`` Cargo feature. Not supported in WASM.
+
+ See the `Rust documentation for FsDataProvider <https://docs.rs/icu_provider_fs/latest/icu_provider_fs/struct.FsDataProvider.html>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XDataProvider create_test()
+
+ Deprecated
+
+ Use ``create_compiled()``.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XDataProvider, ICU4XError> create_from_byte_slice(const diplomat::span<const uint8_t> blob)
+
+ Constructs a ``BlobDataProvider`` and returns it as an :cpp:class:`ICU4XDataProvider`.
+
+ See the `Rust documentation for BlobDataProvider <https://docs.rs/icu_provider_blob/latest/icu_provider_blob/struct.BlobDataProvider.html>`__ for more information.
+
+ Lifetimes: ``blob`` must live for the duration of the program.
+
+
+ .. cpp:function:: static ICU4XDataProvider create_empty()
+
+ Constructs an empty :cpp:class:`ICU4XDataProvider`.
+
+ See the `Rust documentation for EmptyDataProvider <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/empty/struct.EmptyDataProvider.html>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> fork_by_key(ICU4XDataProvider& other)
+
+ Creates a provider that tries the current provider and then, if the current provider doesn't support the data key, another provider ``other``.
+
+ This takes ownership of the ``other`` provider, leaving an empty provider in its place.
+
+ The providers must be the same type (Any or Buffer). This condition is satisfied if both providers originate from the same constructor, such as ``create_from_byte_slice`` or ``create_fs``. If the condition is not upheld, a runtime error occurs.
+
+ See the `Rust documentation for ForkByKeyProvider <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fork/type.ForkByKeyProvider.html>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> fork_by_locale(ICU4XDataProvider& other)
+
+ Same as ``fork_by_key`` but forks by locale instead of key.
+
+ See the `Rust documentation for MissingLocalePredicate <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fork/predicates/struct.MissingLocalePredicate.html>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> enable_locale_fallback()
+
+ Enables locale fallbacking for data requests made to this provider.
+
+ Note that the test provider (from ``create_test``) already has fallbacking enabled.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fallback/struct.LocaleFallbackProvider.html#method.try_new>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fallback/struct.LocaleFallbackProvider.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> enable_locale_fallback_with(const ICU4XLocaleFallbacker& fallbacker)
+
+ See the `Rust documentation for new_with_fallbacker <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fallback/struct.LocaleFallbackProvider.html#method.new_with_fallbacker>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/fallback/struct.LocaleFallbackProvider.html>`__
+
diff --git a/intl/icu_capi/cpp/docs/source/script_ffi.rst b/intl/icu_capi/cpp/docs/source/script_ffi.rst
new file mode 100644
index 0000000000..a6c06879e2
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/script_ffi.rst
@@ -0,0 +1,111 @@
+``script::ffi``
+===============
+
+.. cpp:class:: ICU4XScriptExtensionsSet
+
+ An object that represents the Script_Extensions property for a single character
+
+ See the `Rust documentation for ScriptExtensionsSet <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptExtensionsSet.html>`__ for more information.
+
+
+ .. cpp:function:: bool contains(uint16_t script) const
+
+ Check if the Script_Extensions property of the given code point covers the given script
+
+ See the `Rust documentation for contains <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptExtensionsSet.html#method.contains>`__ for more information.
+
+
+ .. cpp:function:: size_t count() const
+
+ Get the number of scripts contained in here
+
+ See the `Rust documentation for iter <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptExtensionsSet.html#method.iter>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<uint16_t, std::monostate> script_at(size_t index) const
+
+ Get script at index, returning an error if out of bounds
+
+ See the `Rust documentation for iter <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptExtensionsSet.html#method.iter>`__ for more information.
+
+
+.. cpp:class:: ICU4XScriptWithExtensions
+
+ An ICU4X ScriptWithExtensions map object, capable of holding a map of codepoints to scriptextensions values
+
+ See the `Rust documentation for ScriptWithExtensions <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensions.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XScriptWithExtensions, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ See the `Rust documentation for script_with_extensions <https://docs.rs/icu/latest/icu/properties/script/fn.script_with_extensions.html>`__ for more information.
+
+
+ .. cpp:function:: uint16_t get_script_val(uint32_t code_point) const
+
+ Get the Script property value for a code point
+
+ See the `Rust documentation for get_script_val <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.get_script_val>`__ for more information.
+
+
+ .. cpp:function:: bool has_script(uint32_t code_point, uint16_t script) const
+
+ Check if the Script_Extensions property of the given code point covers the given script
+
+ See the `Rust documentation for has_script <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.has_script>`__ for more information.
+
+
+ .. cpp:function:: ICU4XScriptWithExtensionsBorrowed as_borrowed() const
+
+ Borrow this object for a slightly faster variant with more operations
+
+ See the `Rust documentation for as_borrowed <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensions.html#method.as_borrowed>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: CodePointRangeIterator iter_ranges_for_script(uint16_t script) const
+
+ Get a list of ranges of code points that contain this script in their Script_Extensions values
+
+ See the `Rust documentation for get_script_extensions_ranges <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.get_script_extensions_ranges>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+.. cpp:class:: ICU4XScriptWithExtensionsBorrowed
+
+ A slightly faster ICU4XScriptWithExtensions object
+
+ See the `Rust documentation for ScriptWithExtensionsBorrowed <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html>`__ for more information.
+
+
+ .. cpp:function:: uint16_t get_script_val(uint32_t code_point) const
+
+ Get the Script property value for a code point
+
+ See the `Rust documentation for get_script_val <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.get_script_val>`__ for more information.
+
+
+ .. cpp:function:: ICU4XScriptExtensionsSet get_script_extensions_val(uint32_t code_point) const
+
+ Get the Script property value for a code point
+
+ See the `Rust documentation for get_script_extensions_val <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.get_script_extensions_val>`__ for more information.
+
+ Lifetimes: ``this`` must live at least as long as the output.
+
+
+ .. cpp:function:: bool has_script(uint32_t code_point, uint16_t script) const
+
+ Check if the Script_Extensions property of the given code point covers the given script
+
+ See the `Rust documentation for has_script <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.has_script>`__ for more information.
+
+
+ .. cpp:function:: ICU4XCodePointSetData get_script_extensions_set(uint16_t script) const
+
+ Build the CodePointSetData corresponding to a codepoints matching a particular script in their Script_Extensions
+
+ See the `Rust documentation for get_script_extensions_set <https://docs.rs/icu/latest/icu/properties/script/struct.ScriptWithExtensionsBorrowed.html#method.get_script_extensions_set>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/segmenter_grapheme_ffi.rst b/intl/icu_capi/cpp/docs/source/segmenter_grapheme_ffi.rst
new file mode 100644
index 0000000000..7af2c10fcd
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/segmenter_grapheme_ffi.rst
@@ -0,0 +1,79 @@
+``segmenter_grapheme::ffi``
+===========================
+
+.. cpp:class:: ICU4XGraphemeClusterBreakIteratorLatin1
+
+ See the `Rust documentation for GraphemeClusterBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XGraphemeClusterBreakIteratorUtf16
+
+ See the `Rust documentation for GraphemeClusterBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XGraphemeClusterBreakIteratorUtf8
+
+ See the `Rust documentation for GraphemeClusterBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XGraphemeClusterSegmenter
+
+ An ICU4X grapheme-cluster-break segmenter, capable of finding grapheme cluster breakpoints in strings.
+
+ See the `Rust documentation for GraphemeClusterSegmenter <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterSegmenter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGraphemeClusterSegmenter, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct an :cpp:class:`ICU4XGraphemeClusterSegmenter`.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterSegmenter.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XGraphemeClusterBreakIteratorUtf8 segment_utf8(const std::string_view input) const
+
+ Segments a (potentially ill-formed) UTF-8 string.
+
+ See the `Rust documentation for segment_utf8 <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterSegmenter.html#method.segment_utf8>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XGraphemeClusterBreakIteratorUtf16 segment_utf16(const diplomat::span<const uint16_t> input) const
+
+ Segments a UTF-16 string.
+
+ See the `Rust documentation for segment_utf16 <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterSegmenter.html#method.segment_utf16>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XGraphemeClusterBreakIteratorLatin1 segment_latin1(const diplomat::span<const uint8_t> input) const
+
+ Segments a Latin-1 string.
+
+ See the `Rust documentation for segment_latin1 <https://docs.rs/icu/latest/icu/segmenter/struct.GraphemeClusterSegmenter.html#method.segment_latin1>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
diff --git a/intl/icu_capi/cpp/docs/source/segmenter_line_ffi.rst b/intl/icu_capi/cpp/docs/source/segmenter_line_ffi.rst
new file mode 100644
index 0000000000..2d2aa514b1
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/segmenter_line_ffi.rst
@@ -0,0 +1,155 @@
+``segmenter_line::ffi``
+=======================
+
+.. cpp:class:: ICU4XLineBreakIteratorLatin1
+
+ See the `Rust documentation for LineBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/segmenter/type.LineBreakIteratorLatin1.html>`__
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XLineBreakIteratorUtf16
+
+ See the `Rust documentation for LineBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/segmenter/type.LineBreakIteratorUtf16.html>`__
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XLineBreakIteratorUtf8
+
+ See the `Rust documentation for LineBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/segmenter/type.LineBreakIteratorPotentiallyIllFormedUtf8.html>`__
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:struct:: ICU4XLineBreakOptionsV1
+
+ See the `Rust documentation for LineBreakOptions <https://docs.rs/icu/latest/icu/segmenter/struct.LineBreakOptions.html>`__ for more information.
+
+
+ .. cpp:member:: ICU4XLineBreakStrictness strictness
+
+ .. cpp:member:: ICU4XLineBreakWordOption word_option
+
+ .. cpp:member:: bool ja_zh
+
+.. cpp:enum-struct:: ICU4XLineBreakStrictness
+
+ See the `Rust documentation for LineBreakStrictness <https://docs.rs/icu/latest/icu/segmenter/enum.LineBreakStrictness.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Loose
+
+ .. cpp:enumerator:: Normal
+
+ .. cpp:enumerator:: Strict
+
+ .. cpp:enumerator:: Anywhere
+
+.. cpp:enum-struct:: ICU4XLineBreakWordOption
+
+ See the `Rust documentation for LineBreakWordOption <https://docs.rs/icu/latest/icu/segmenter/enum.LineBreakWordOption.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Normal
+
+ .. cpp:enumerator:: BreakAll
+
+ .. cpp:enumerator:: KeepAll
+
+.. cpp:class:: ICU4XLineSegmenter
+
+ An ICU4X line-break segmenter, capable of finding breakpoints in strings.
+
+ See the `Rust documentation for LineSegmenter <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_auto(const ICU4XDataProvider& provider)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with default options. It automatically loads the best available payload data for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_auto <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_auto>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_lstm(const ICU4XDataProvider& provider)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with default options and LSTM payload data for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_lstm <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_lstm>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_dictionary(const ICU4XDataProvider& provider)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with default options and dictionary payload data for Burmese, Khmer, Lao, and Thai..
+
+ See the `Rust documentation for new_dictionary <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_dictionary>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_auto_with_options_v1(const ICU4XDataProvider& provider, ICU4XLineBreakOptionsV1 options)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with custom options. It automatically loads the best available payload data for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_auto_with_options <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_auto_with_options>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_lstm_with_options_v1(const ICU4XDataProvider& provider, ICU4XLineBreakOptionsV1 options)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with custom options and LSTM payload data for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_lstm_with_options <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_lstm_with_options>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XLineSegmenter, ICU4XError> create_dictionary_with_options_v1(const ICU4XDataProvider& provider, ICU4XLineBreakOptionsV1 options)
+
+ Construct a :cpp:class:`ICU4XLineSegmenter` with custom options and dictionary payload data for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_dictionary_with_options <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.new_dictionary_with_options>`__ for more information.
+
+
+ .. cpp:function:: ICU4XLineBreakIteratorUtf8 segment_utf8(const std::string_view input) const
+
+ Segments a (potentially ill-formed) UTF-8 string.
+
+ See the `Rust documentation for segment_utf8 <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.segment_utf8>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XLineBreakIteratorUtf16 segment_utf16(const diplomat::span<const uint16_t> input) const
+
+ Segments a UTF-16 string.
+
+ See the `Rust documentation for segment_utf16 <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.segment_utf16>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XLineBreakIteratorLatin1 segment_latin1(const diplomat::span<const uint8_t> input) const
+
+ Segments a Latin-1 string.
+
+ See the `Rust documentation for segment_latin1 <https://docs.rs/icu/latest/icu/segmenter/struct.LineSegmenter.html#method.segment_latin1>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
diff --git a/intl/icu_capi/cpp/docs/source/segmenter_sentence_ffi.rst b/intl/icu_capi/cpp/docs/source/segmenter_sentence_ffi.rst
new file mode 100644
index 0000000000..1d10fdcf4a
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/segmenter_sentence_ffi.rst
@@ -0,0 +1,79 @@
+``segmenter_sentence::ffi``
+===========================
+
+.. cpp:class:: ICU4XSentenceBreakIteratorLatin1
+
+ See the `Rust documentation for SentenceBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XSentenceBreakIteratorUtf16
+
+ See the `Rust documentation for SentenceBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XSentenceBreakIteratorUtf8
+
+ See the `Rust documentation for SentenceBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceBreakIterator.html#method.next>`__ for more information.
+
+
+.. cpp:class:: ICU4XSentenceSegmenter
+
+ An ICU4X sentence-break segmenter, capable of finding sentence breakpoints in strings.
+
+ See the `Rust documentation for SentenceSegmenter <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceSegmenter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XSentenceSegmenter, ICU4XError> create(const ICU4XDataProvider& provider)
+
+ Construct an :cpp:class:`ICU4XSentenceSegmenter`.
+
+ See the `Rust documentation for new <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceSegmenter.html#method.new>`__ for more information.
+
+
+ .. cpp:function:: ICU4XSentenceBreakIteratorUtf8 segment_utf8(const std::string_view input) const
+
+ Segments a (potentially ill-formed) UTF-8 string.
+
+ See the `Rust documentation for segment_utf8 <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceSegmenter.html#method.segment_utf8>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XSentenceBreakIteratorUtf16 segment_utf16(const diplomat::span<const uint16_t> input) const
+
+ Segments a UTF-16 string.
+
+ See the `Rust documentation for segment_utf16 <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceSegmenter.html#method.segment_utf16>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XSentenceBreakIteratorLatin1 segment_latin1(const diplomat::span<const uint8_t> input) const
+
+ Segments a Latin-1 string.
+
+ See the `Rust documentation for segment_latin1 <https://docs.rs/icu/latest/icu/segmenter/struct.SentenceSegmenter.html#method.segment_latin1>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
diff --git a/intl/icu_capi/cpp/docs/source/segmenter_word_ffi.rst b/intl/icu_capi/cpp/docs/source/segmenter_word_ffi.rst
new file mode 100644
index 0000000000..fc9cbe1494
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/segmenter_word_ffi.rst
@@ -0,0 +1,150 @@
+``segmenter_word::ffi``
+=======================
+
+.. cpp:enum-struct:: ICU4XSegmenterWordType
+
+ See the `Rust documentation for WordType <https://docs.rs/icu/latest/icu/segmenter/enum.WordType.html>`__ for more information.
+
+
+ .. cpp:enumerator:: None
+
+ .. cpp:enumerator:: Number
+
+ .. cpp:enumerator:: Letter
+
+.. cpp:class:: ICU4XWordBreakIteratorLatin1
+
+ See the `Rust documentation for WordBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.next>`__ for more information.
+
+
+ .. cpp:function:: ICU4XSegmenterWordType word_type() const
+
+ Return the status value of break boundary.
+
+ See the `Rust documentation for word_type <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.word_type>`__ for more information.
+
+
+ .. cpp:function:: bool is_word_like() const
+
+ Return true when break boundary is word-like such as letter/number/CJK
+
+ See the `Rust documentation for is_word_like <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.is_word_like>`__ for more information.
+
+
+.. cpp:class:: ICU4XWordBreakIteratorUtf16
+
+ See the `Rust documentation for WordBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.next>`__ for more information.
+
+
+ .. cpp:function:: ICU4XSegmenterWordType word_type() const
+
+ Return the status value of break boundary.
+
+ See the `Rust documentation for word_type <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.word_type>`__ for more information.
+
+
+ .. cpp:function:: bool is_word_like() const
+
+ Return true when break boundary is word-like such as letter/number/CJK
+
+ See the `Rust documentation for is_word_like <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.is_word_like>`__ for more information.
+
+
+.. cpp:class:: ICU4XWordBreakIteratorUtf8
+
+ See the `Rust documentation for WordBreakIterator <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html>`__ for more information.
+
+
+ .. cpp:function:: int32_t next()
+
+ Finds the next breakpoint. Returns -1 if at the end of the string or if the index is out of range of a 32-bit signed integer.
+
+ See the `Rust documentation for next <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.next>`__ for more information.
+
+
+ .. cpp:function:: ICU4XSegmenterWordType word_type() const
+
+ Return the status value of break boundary.
+
+ See the `Rust documentation for word_type <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.word_type>`__ for more information.
+
+
+ .. cpp:function:: bool is_word_like() const
+
+ Return true when break boundary is word-like such as letter/number/CJK
+
+ See the `Rust documentation for is_word_like <https://docs.rs/icu/latest/icu/segmenter/struct.WordBreakIterator.html#method.is_word_like>`__ for more information.
+
+
+.. cpp:class:: ICU4XWordSegmenter
+
+ An ICU4X word-break segmenter, capable of finding word breakpoints in strings.
+
+ See the `Rust documentation for WordSegmenter <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XWordSegmenter, ICU4XError> create_auto(const ICU4XDataProvider& provider)
+
+ Construct an :cpp:class:`ICU4XWordSegmenter` with automatically selecting the best available LSTM or dictionary payload data.
+
+ Note: currently, it uses dictionary for Chinese and Japanese, and LSTM for Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_auto <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.new_auto>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XWordSegmenter, ICU4XError> create_lstm(const ICU4XDataProvider& provider)
+
+ Construct an :cpp:class:`ICU4XWordSegmenter` with LSTM payload data for Burmese, Khmer, Lao, and Thai.
+
+ Warning: :cpp:class:`ICU4XWordSegmenter` created by this function doesn't handle Chinese or Japanese.
+
+ See the `Rust documentation for new_lstm <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.new_lstm>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XWordSegmenter, ICU4XError> create_dictionary(const ICU4XDataProvider& provider)
+
+ Construct an :cpp:class:`ICU4XWordSegmenter` with dictionary payload data for Chinese, Japanese, Burmese, Khmer, Lao, and Thai.
+
+ See the `Rust documentation for new_dictionary <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.new_dictionary>`__ for more information.
+
+
+ .. cpp:function:: ICU4XWordBreakIteratorUtf8 segment_utf8(const std::string_view input) const
+
+ Segments a (potentially ill-formed) UTF-8 string.
+
+ See the `Rust documentation for segment_utf8 <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.segment_utf8>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XWordBreakIteratorUtf16 segment_utf16(const diplomat::span<const uint16_t> input) const
+
+ Segments a UTF-16 string.
+
+ See the `Rust documentation for segment_utf16 <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.segment_utf16>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
+
+ .. cpp:function:: ICU4XWordBreakIteratorLatin1 segment_latin1(const diplomat::span<const uint8_t> input) const
+
+ Segments a Latin-1 string.
+
+ See the `Rust documentation for segment_latin1 <https://docs.rs/icu/latest/icu/segmenter/struct.WordSegmenter.html#method.segment_latin1>`__ for more information.
+
+ Lifetimes: ``this``, ``input`` must live at least as long as the output.
+
diff --git a/intl/icu_capi/cpp/docs/source/time_ffi.rst b/intl/icu_capi/cpp/docs/source/time_ffi.rst
new file mode 100644
index 0000000000..173a309e24
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/time_ffi.rst
@@ -0,0 +1,51 @@
+``time::ffi``
+=============
+
+.. cpp:class:: ICU4XTime
+
+ An ICU4X Time object representing a time in terms of hour, minute, second, nanosecond
+
+ See the `Rust documentation for Time <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTime, ICU4XError> create(uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond)
+
+ Creates a new :cpp:class:`ICU4XTime` given field values
+
+ See the `Rust documentation for Time <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTime, ICU4XError> create_midnight()
+
+ Creates a new :cpp:class:`ICU4XTime` representing midnight (00:00.000).
+
+ See the `Rust documentation for Time <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html>`__ for more information.
+
+
+ .. cpp:function:: uint8_t hour() const
+
+ Returns the hour in this time
+
+ See the `Rust documentation for hour <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.hour>`__ for more information.
+
+
+ .. cpp:function:: uint8_t minute() const
+
+ Returns the minute in this time
+
+ See the `Rust documentation for minute <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.minute>`__ for more information.
+
+
+ .. cpp:function:: uint8_t second() const
+
+ Returns the second in this time
+
+ See the `Rust documentation for second <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.second>`__ for more information.
+
+
+ .. cpp:function:: uint32_t nanosecond() const
+
+ Returns the nanosecond in this time
+
+ See the `Rust documentation for nanosecond <https://docs.rs/icu/latest/icu/calendar/types/struct.Time.html#structfield.nanosecond>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/timezone_ffi.rst b/intl/icu_capi/cpp/docs/source/timezone_ffi.rst
new file mode 100644
index 0000000000..ee94c03524
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/timezone_ffi.rst
@@ -0,0 +1,279 @@
+``timezone::ffi``
+=================
+
+.. cpp:class:: ICU4XCustomTimeZone
+
+ See the `Rust documentation for CustomTimeZone <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XCustomTimeZone, ICU4XError> create_from_string(const std::string_view s)
+
+ Creates a time zone from an offset string.
+
+ See the `Rust documentation for from_str <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.from_str>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XCustomTimeZone create_empty()
+
+ Creates a time zone with no information.
+
+ See the `Rust documentation for new_empty <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.new_empty>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XCustomTimeZone create_utc()
+
+ Creates a time zone for UTC.
+
+ See the `Rust documentation for utc <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.utc>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> try_set_gmt_offset_seconds(int32_t offset_seconds)
+
+ Sets the ``gmt_offset`` field from offset seconds.
+
+ Errors if the offset seconds are out of range.
+
+ See the `Rust documentation for try_from_offset_seconds <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.try_from_offset_seconds>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html>`__
+
+
+ .. cpp:function:: void clear_gmt_offset()
+
+ Clears the ``gmt_offset`` field.
+
+ See the `Rust documentation for offset_seconds <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.offset_seconds>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html>`__
+
+
+ .. cpp:function:: diplomat::result<int32_t, ICU4XError> gmt_offset_seconds() const
+
+ Returns the value of the ``gmt_offset`` field as offset seconds.
+
+ Errors if the ``gmt_offset`` field is empty.
+
+ See the `Rust documentation for offset_seconds <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.offset_seconds>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html>`__
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> is_gmt_offset_positive() const
+
+ Returns whether the ``gmt_offset`` field is positive.
+
+ Errors if the ``gmt_offset`` field is empty.
+
+ See the `Rust documentation for is_positive <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.is_positive>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> is_gmt_offset_zero() const
+
+ Returns whether the ``gmt_offset`` field is zero.
+
+ Errors if the ``gmt_offset`` field is empty (which is not the same as zero).
+
+ See the `Rust documentation for is_zero <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.is_zero>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> gmt_offset_has_minutes() const
+
+ Returns whether the ``gmt_offset`` field has nonzero minutes.
+
+ Errors if the ``gmt_offset`` field is empty.
+
+ See the `Rust documentation for has_minutes <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.has_minutes>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> gmt_offset_has_seconds() const
+
+ Returns whether the ``gmt_offset`` field has nonzero seconds.
+
+ Errors if the ``gmt_offset`` field is empty.
+
+ See the `Rust documentation for has_seconds <https://docs.rs/icu/latest/icu/timezone/struct.GmtOffset.html#method.has_seconds>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> try_set_time_zone_id(const std::string_view id)
+
+ Sets the ``time_zone_id`` field from a BCP-47 string.
+
+ Errors if the string is not a valid BCP-47 time zone ID.
+
+ See the `Rust documentation for time_zone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> try_set_iana_time_zone_id(const ICU4XIanaToBcp47Mapper& mapper, const std::string_view id)
+
+ Sets the ``time_zone_id`` field from an IANA string by looking up the corresponding BCP-47 string.
+
+ Errors if the string is not a valid BCP-47 time zone ID.
+
+ See the `Rust documentation for get <https://docs.rs/icu/latest/icu/timezone/struct.IanaToBcp47MapperBorrowed.html#method.get>`__ for more information.
+
+
+ .. cpp:function:: void clear_time_zone_id()
+
+ Clears the ``time_zone_id`` field.
+
+ See the `Rust documentation for time_zone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html>`__
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> time_zone_id_to_writeable(W& write) const
+
+ Writes the value of the ``time_zone_id`` field as a string.
+
+ Errors if the ``time_zone_id`` field is empty.
+
+ See the `Rust documentation for time_zone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> time_zone_id() const
+
+ Writes the value of the ``time_zone_id`` field as a string.
+
+ Errors if the ``time_zone_id`` field is empty.
+
+ See the `Rust documentation for time_zone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.time_zone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.TimeZoneBcp47Id.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> try_set_metazone_id(const std::string_view id)
+
+ Sets the ``metazone_id`` field from a string.
+
+ Errors if the string is not a valid BCP-47 metazone ID.
+
+ See the `Rust documentation for metazone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html>`__
+
+
+ .. cpp:function:: void clear_metazone_id()
+
+ Clears the ``metazone_id`` field.
+
+ See the `Rust documentation for metazone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html>`__
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> metazone_id_to_writeable(W& write) const
+
+ Writes the value of the ``metazone_id`` field as a string.
+
+ Errors if the ``metazone_id`` field is empty.
+
+ See the `Rust documentation for metazone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> metazone_id() const
+
+ Writes the value of the ``metazone_id`` field as a string.
+
+ Errors if the ``metazone_id`` field is empty.
+
+ See the `Rust documentation for metazone_id <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.metazone_id>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneId.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> try_set_zone_variant(const std::string_view id)
+
+ Sets the ``zone_variant`` field from a string.
+
+ Errors if the string is not a valid zone variant.
+
+ See the `Rust documentation for zone_variant <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html>`__
+
+
+ .. cpp:function:: void clear_zone_variant()
+
+ Clears the ``zone_variant`` field.
+
+ See the `Rust documentation for zone_variant <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html>`__
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> zone_variant_to_writeable(W& write) const
+
+ Writes the value of the ``zone_variant`` field as a string.
+
+ Errors if the ``zone_variant`` field is empty.
+
+ See the `Rust documentation for zone_variant <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> zone_variant() const
+
+ Writes the value of the ``zone_variant`` field as a string.
+
+ Errors if the ``zone_variant`` field is empty.
+
+ See the `Rust documentation for zone_variant <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html>`__
+
+
+ .. cpp:function:: void set_standard_time()
+
+ Sets the ``zone_variant`` field to standard time.
+
+ See the `Rust documentation for standard <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.standard>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__
+
+
+ .. cpp:function:: void set_daylight_time()
+
+ Sets the ``zone_variant`` field to daylight time.
+
+ See the `Rust documentation for daylight <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.daylight>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> is_standard_time() const
+
+ Returns whether the ``zone_variant`` field is standard time.
+
+ Errors if the ``zone_variant`` field is empty.
+
+ See the `Rust documentation for standard <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.standard>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__
+
+
+ .. cpp:function:: diplomat::result<bool, ICU4XError> is_daylight_time() const
+
+ Returns whether the ``zone_variant`` field is daylight time.
+
+ Errors if the ``zone_variant`` field is empty.
+
+ See the `Rust documentation for daylight <https://docs.rs/icu/latest/icu/timezone/struct.ZoneVariant.html#method.daylight>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#structfield.zone_variant>`__
+
+
+ .. cpp:function:: void maybe_calculate_metazone(const ICU4XMetazoneCalculator& metazone_calculator, const ICU4XIsoDateTime& local_datetime)
+
+ Sets the metazone based on the time zone and the local timestamp.
+
+ See the `Rust documentation for maybe_calculate_metazone <https://docs.rs/icu/latest/icu/timezone/struct.CustomTimeZone.html#method.maybe_calculate_metazone>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/timezone/struct.MetazoneCalculator.html#method.compute_metazone_from_time_zone>`__
+
diff --git a/intl/icu_capi/cpp/docs/source/timezone_formatter_ffi.rst b/intl/icu_capi/cpp/docs/source/timezone_formatter_ffi.rst
new file mode 100644
index 0000000000..38e2107b41
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/timezone_formatter_ffi.rst
@@ -0,0 +1,137 @@
+``timezone_formatter::ffi``
+===========================
+
+.. cpp:enum-struct:: ICU4XIsoTimeZoneFormat
+
+ See the `Rust documentation for IsoFormat <https://docs.rs/icu/latest/icu/datetime/time_zone/enum.IsoFormat.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Basic
+
+ .. cpp:enumerator:: Extended
+
+ .. cpp:enumerator:: UtcBasic
+
+ .. cpp:enumerator:: UtcExtended
+
+.. cpp:enum-struct:: ICU4XIsoTimeZoneMinuteDisplay
+
+ See the `Rust documentation for IsoMinutes <https://docs.rs/icu/latest/icu/datetime/time_zone/enum.IsoMinutes.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Required
+
+ .. cpp:enumerator:: Optional
+
+.. cpp:struct:: ICU4XIsoTimeZoneOptions
+
+ .. cpp:member:: ICU4XIsoTimeZoneFormat format
+
+ .. cpp:member:: ICU4XIsoTimeZoneMinuteDisplay minutes
+
+ .. cpp:member:: ICU4XIsoTimeZoneSecondDisplay seconds
+
+.. cpp:enum-struct:: ICU4XIsoTimeZoneSecondDisplay
+
+ See the `Rust documentation for IsoSeconds <https://docs.rs/icu/latest/icu/datetime/time_zone/enum.IsoSeconds.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Optional
+
+ .. cpp:enumerator:: Never
+
+.. cpp:class:: ICU4XTimeZoneFormatter
+
+ An ICU4X TimeZoneFormatter object capable of formatting an :cpp:class:`ICU4XCustomTimeZone` type (and others) as a string
+
+ See the `Rust documentation for TimeZoneFormatter <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTimeZoneFormatter, ICU4XError> create_with_localized_gmt_fallback(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Creates a new :cpp:class:`ICU4XTimeZoneFormatter` from locale data.
+
+ Uses localized GMT as the fallback format.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.try_new>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/datetime/time_zone/enum.FallbackFormat.html>`__
+
+
+ .. cpp:function:: static diplomat::result<ICU4XTimeZoneFormatter, ICU4XError> create_with_iso_8601_fallback(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XIsoTimeZoneOptions options)
+
+ Creates a new :cpp:class:`ICU4XTimeZoneFormatter` from locale data.
+
+ Uses ISO-8601 as the fallback format.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.try_new>`__ for more information.
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/datetime/time_zone/enum.FallbackFormat.html>`__
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_generic_non_location_long(const ICU4XDataProvider& provider)
+
+ Loads generic non-location long format. Example: "Pacific Time"
+
+ See the `Rust documentation for include_generic_non_location_long <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_generic_non_location_long>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_generic_non_location_short(const ICU4XDataProvider& provider)
+
+ Loads generic non-location short format. Example: "PT"
+
+ See the `Rust documentation for include_generic_non_location_short <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_generic_non_location_short>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_specific_non_location_long(const ICU4XDataProvider& provider)
+
+ Loads specific non-location long format. Example: "Pacific Standard Time"
+
+ See the `Rust documentation for include_specific_non_location_long <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_specific_non_location_long>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_specific_non_location_short(const ICU4XDataProvider& provider)
+
+ Loads specific non-location short format. Example: "PST"
+
+ See the `Rust documentation for include_specific_non_location_short <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_specific_non_location_short>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_generic_location_format(const ICU4XDataProvider& provider)
+
+ Loads generic location format. Example: "Los Angeles Time"
+
+ See the `Rust documentation for include_generic_location_format <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_generic_location_format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> include_localized_gmt_format()
+
+ Loads localized GMT format. Example: "GMT-07:00"
+
+ See the `Rust documentation for include_localized_gmt_format <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_localized_gmt_format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::monostate, ICU4XError> load_iso_8601_format(ICU4XIsoTimeZoneOptions options)
+
+ Loads ISO-8601 format. Example: "-07:00"
+
+ See the `Rust documentation for include_iso_8601_format <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.include_iso_8601_format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_custom_time_zone_to_writeable(const ICU4XCustomTimeZone& value, W& write) const
+
+ Formats a :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.format>`__ for more information.
+
+ See the `Rust documentation for format_to_string <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.format_to_string>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_custom_time_zone(const ICU4XCustomTimeZone& value) const
+
+ Formats a :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.format>`__ for more information.
+
+ See the `Rust documentation for format_to_string <https://docs.rs/icu/latest/icu/datetime/time_zone/struct.TimeZoneFormatter.html#method.format_to_string>`__ for more information.
+
diff --git a/intl/icu_capi/cpp/docs/source/week_ffi.rst b/intl/icu_capi/cpp/docs/source/week_ffi.rst
new file mode 100644
index 0000000000..b07f8f7c7c
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/week_ffi.rst
@@ -0,0 +1,55 @@
+``week::ffi``
+=============
+
+.. cpp:class:: ICU4XWeekCalculator
+
+ A Week calculator, useful to be passed in to ``week_of_year()`` on Date and DateTime types
+
+ See the `Rust documentation for WeekCalculator <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XWeekCalculator, ICU4XError> create(const ICU4XDataProvider& provider, const ICU4XLocale& locale)
+
+ Creates a new :cpp:class:`ICU4XWeekCalculator` from locale data.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: static ICU4XWeekCalculator create_from_first_day_of_week_and_min_week_days(ICU4XIsoWeekday first_weekday, uint8_t min_week_days)
+
+ Additional information: `1 <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html#structfield.first_weekday>`__, `2 <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html#structfield.min_week_days>`__
+
+
+ .. cpp:function:: ICU4XIsoWeekday first_weekday() const
+
+ Returns the weekday that starts the week for this object's locale
+
+ See the `Rust documentation for first_weekday <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html#structfield.first_weekday>`__ for more information.
+
+
+ .. cpp:function:: uint8_t min_week_days() const
+
+ The minimum number of days overlapping a year required for a week to be considered part of that year
+
+ See the `Rust documentation for min_week_days <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekCalculator.html#structfield.min_week_days>`__ for more information.
+
+
+.. cpp:struct:: ICU4XWeekOf
+
+ See the `Rust documentation for WeekOf <https://docs.rs/icu/latest/icu/calendar/week/struct.WeekOf.html>`__ for more information.
+
+
+ .. cpp:member:: uint16_t week
+
+ .. cpp:member:: ICU4XWeekRelativeUnit unit
+
+.. cpp:enum-struct:: ICU4XWeekRelativeUnit
+
+ See the `Rust documentation for RelativeUnit <https://docs.rs/icu/latest/icu/calendar/week/enum.RelativeUnit.html>`__ for more information.
+
+
+ .. cpp:enumerator:: Previous
+
+ .. cpp:enumerator:: Current
+
+ .. cpp:enumerator:: Next
diff --git a/intl/icu_capi/cpp/docs/source/zoned_formatter_ffi.rst b/intl/icu_capi/cpp/docs/source/zoned_formatter_ffi.rst
new file mode 100644
index 0000000000..9523798307
--- /dev/null
+++ b/intl/icu_capi/cpp/docs/source/zoned_formatter_ffi.rst
@@ -0,0 +1,94 @@
+``zoned_formatter::ffi``
+========================
+
+.. cpp:class:: ICU4XGregorianZonedDateTimeFormatter
+
+ An object capable of formatting a date time with time zone to a string.
+
+ See the `Rust documentation for TypedZonedDateTimeFormatter <https://docs.rs/icu/latest/icu/datetime/struct.TypedZonedDateTimeFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGregorianZonedDateTimeFormatter, ICU4XError> create_with_lengths(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length)
+
+ Creates a new :cpp:class:`ICU4XGregorianZonedDateTimeFormatter` from locale data.
+
+ This function has ``date_length`` and ``time_length`` arguments and uses default options for the time zone.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.TypedZonedDateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XGregorianZonedDateTimeFormatter, ICU4XError> create_with_lengths_and_iso_8601_time_zone_fallback(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length, ICU4XIsoTimeZoneOptions zone_options)
+
+ Creates a new :cpp:class:`ICU4XGregorianZonedDateTimeFormatter` from locale data.
+
+ This function has ``date_length`` and ``time_length`` arguments and uses an ISO-8601 style fallback for the time zone with the given configurations.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.TypedZonedDateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_with_custom_time_zone_to_writeable(const ICU4XIsoDateTime& datetime, const ICU4XCustomTimeZone& time_zone, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedZonedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime_with_custom_time_zone(const ICU4XIsoDateTime& datetime, const ICU4XCustomTimeZone& time_zone) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.TypedZonedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+.. cpp:class:: ICU4XZonedDateTimeFormatter
+
+ An object capable of formatting a date time with time zone to a string.
+
+ See the `Rust documentation for ZonedDateTimeFormatter <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XZonedDateTimeFormatter, ICU4XError> create_with_lengths(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length)
+
+ Creates a new :cpp:class:`ICU4XZonedDateTimeFormatter` from locale data.
+
+ This function has ``date_length`` and ``time_length`` arguments and uses default options for the time zone.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: static diplomat::result<ICU4XZonedDateTimeFormatter, ICU4XError> create_with_lengths_and_iso_8601_time_zone_fallback(const ICU4XDataProvider& provider, const ICU4XLocale& locale, ICU4XDateLength date_length, ICU4XTimeLength time_length, ICU4XIsoTimeZoneOptions zone_options)
+
+ Creates a new :cpp:class:`ICU4XZonedDateTimeFormatter` from locale data.
+
+ This function has ``date_length`` and ``time_length`` arguments and uses an ISO-8601 style fallback for the time zone with the given configurations.
+
+ See the `Rust documentation for try_new <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.try_new>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_datetime_with_custom_time_zone_to_writeable(const ICU4XDateTime& datetime, const ICU4XCustomTimeZone& time_zone, W& write) const
+
+ Formats a :cpp:class:`ICU4XDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_datetime_with_custom_time_zone(const ICU4XDateTime& datetime, const ICU4XCustomTimeZone& time_zone) const
+
+ Formats a :cpp:class:`ICU4XDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_datetime_with_custom_time_zone_to_writeable(const ICU4XIsoDateTime& datetime, const ICU4XCustomTimeZone& time_zone, W& write) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.format>`__ for more information.
+
+
+ .. cpp:function:: diplomat::result<std::string, ICU4XError> format_iso_datetime_with_custom_time_zone(const ICU4XIsoDateTime& datetime, const ICU4XCustomTimeZone& time_zone) const
+
+ Formats a :cpp:class:`ICU4XIsoDateTime` and :cpp:class:`ICU4XCustomTimeZone` to a string.
+
+ See the `Rust documentation for format <https://docs.rs/icu/latest/icu/datetime/struct.ZonedDateTimeFormatter.html#method.format>`__ for more information.
+