unicode_security/
general_security_profile.rs

1//! Utilities for working with the [General Security Profile](https://www.unicode.org/reports/tr39/#General_Security_Profile)
2//! for identifiers
3
4use crate::tables::identifier;
5
6pub use identifier::IdentifierType;
7
8/// Methods for determining characters not restricted from use for identifiers.
9pub trait GeneralSecurityProfile {
10    /// Returns whether the character is not restricted from use for identifiers.
11    fn identifier_allowed(self) -> bool;
12
13    /// Returns the [identifier type](https://www.unicode.org/reports/tr39/#Identifier_Status_and_Type)
14    fn identifier_type(self) -> Option<IdentifierType>;
15}
16
17impl GeneralSecurityProfile for char {
18    #[inline]
19    fn identifier_allowed(self) -> bool {
20        identifier::identifier_status_allowed(self)
21    }
22    #[inline]
23    fn identifier_type(self) -> Option<IdentifierType> {
24        identifier::identifier_type(self)
25    }
26}