icu_collator/
error.rs

1// This file is part of ICU4X. For terms of use, please see the file
2// called LICENSE at the top level of the ICU4X source tree
3// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4
5//! Collator-specific error
6
7use displaydoc::Display;
8use icu_properties::PropertiesError;
9use icu_provider::DataError;
10
11/// A list of error outcomes for various operations in this module.
12///
13/// Re-exported as [`Error`](crate::Error).
14#[derive(Display, Debug)]
15#[non_exhaustive]
16pub enum CollatorError {
17    /// The requested collation does not exist
18    NotFound,
19    /// Requested data was found but was malformed
20    MalformedData,
21    /// An error originating inside of the data provider.
22    #[displaydoc("{0}")]
23    Data(DataError),
24}
25
26#[cfg(feature = "std")]
27impl std::error::Error for CollatorError {}
28
29impl From<DataError> for CollatorError {
30    fn from(e: DataError) -> Self {
31        CollatorError::Data(e)
32    }
33}
34
35impl From<PropertiesError> for CollatorError {
36    fn from(e: PropertiesError) -> Self {
37        match e {
38            PropertiesError::PropDataLoad(d) => CollatorError::Data(d),
39            _ => unreachable!("Shouldn't have non-Data PropertiesError"),
40        }
41    }
42}