///
/// ```rust,compile_fail
/// # #![allow(unused)]
- /// #![feature(non_ascii_idents)]
/// #![deny(non_ascii_idents)]
/// fn main() {
/// let föö = 1;
///
/// ### Explanation
///
- /// Currently on stable Rust, identifiers must contain ASCII characters.
- /// The [`non_ascii_idents`] nightly-only feature allows identifiers to
- /// contain non-ASCII characters. This lint allows projects that wish to
- /// retain the limit of only using ASCII characters to switch this lint to
- /// "forbid" (for example to ease collaboration or for security reasons).
+ /// This lint allows projects that wish to retain the limit of only using
+ /// ASCII characters to switch this lint to "forbid" (for example to ease
+ /// collaboration or for security reasons).
/// See [RFC 2457] for more details.
///
- /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
/// [RFC 2457]: https://github.com/rust-lang/rfcs/blob/master/text/2457-non-ascii-idents.md
pub NON_ASCII_IDENTS,
Allow,
///
/// ```rust
/// # #![allow(unused)]
- /// #![feature(non_ascii_idents)]
/// const µ: f64 = 0.000001;
/// ```
///
///
/// ### Explanation
///
- /// With the [`non_ascii_idents`] nightly-only feature enabled,
- /// identifiers are allowed to use non-ASCII characters. This lint warns
- /// about using characters which are not commonly used, and may cause
- /// visual confusion.
+ /// This lint warns about using characters which are not commonly used, and may
+ /// cause visual confusion.
///
/// This lint is triggered by identifiers that contain a codepoint that is
/// not part of the set of "Allowed" codepoints as described by [Unicode®
/// that if you "forbid" this lint that existing code may fail in the
/// future.
///
- /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
/// [TR39Allowed]: https://www.unicode.org/reports/tr39/#General_Security_Profile
pub UNCOMMON_CODEPOINTS,
Warn,
/// ### Example
///
/// ```rust
- /// #![feature(non_ascii_idents)]
- ///
/// // Latin Capital Letter E With Caron
/// pub const Ě: i32 = 1;
/// // Latin Capital Letter E With Breve
///
/// ### Explanation
///
- /// With the [`non_ascii_idents`] nightly-only feature enabled,
- /// identifiers are allowed to use non-ASCII characters. This lint warns
- /// when different identifiers may appear visually similar, which can
- /// cause confusion.
+ /// This lint warns when different identifiers may appear visually similar,
+ /// which can cause confusion.
///
/// The confusable detection algorithm is based on [Unicode® Technical
/// Standard #39 Unicode Security Mechanisms Section 4 Confusable
/// Beware that if you "forbid" this lint that existing code may fail in
/// the future.
///
- /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
/// [TR39Confusable]: https://www.unicode.org/reports/tr39/#Confusable_Detection
pub CONFUSABLE_IDENTS,
Warn,
/// ### Example
///
/// ```rust
- /// #![feature(non_ascii_idents)]
- ///
/// // The Japanese katakana character エ can be confused with the Han character 工.
/// const エ: &'static str = "アイウ";
/// ```
///
/// ### Explanation
///
- /// With the [`non_ascii_idents`] nightly-only feature enabled,
- /// identifiers are allowed to use non-ASCII characters. This lint warns
- /// when characters between different scripts may appear visually similar,
- /// which can cause confusion.
+ /// This lint warns when characters between different scripts may appear
+ /// visually similar, which can cause confusion.
///
/// If the crate contains other identifiers in the same script that have
/// non-confusable characters, then this lint will *not* be issued. For
/// Note that the set of confusable characters may change over time.
/// Beware that if you "forbid" this lint that existing code may fail in
/// the future.
- ///
- /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
pub MIXED_SCRIPT_CONFUSABLES,
Warn,
"detects Unicode scripts whose mixed script confusables codepoints are solely used",