pub trait AsciiExt { type Owned; fn is_ascii(&self) -> bool; fn to_ascii_uppercase(&self) -> Self::Owned; fn to_ascii_lowercase(&self) -> Self::Owned; fn eq_ignore_ascii_case(&self, other: &Self) -> bool; fn make_ascii_uppercase(&mut self); fn make_ascii_lowercase(&mut self); }
Extension methods for ASCII-subset only operations on string slices.
Be aware that operations on seemingly non-ASCII characters can sometimes have unexpected results. Consider this example:
use std::ascii::AsciiExt; assert_eq!("café".to_ascii_uppercase(), "CAFÉ"); assert_eq!("café".to_ascii_uppercase(), "CAFé");
In the first example, the lowercased string is represented "cafe\u{301}"
(the last character is an acute accent combining character). Unlike the other characters in the string, the combining character will not get mapped to an uppercase variant, resulting in "CAFE\u{301}"
. In the second example, the lowercased string is represented "caf\u{e9}"
(the last character is a single Unicode character representing an 'e' with an acute accent). Since the last character is defined outside the scope of ASCII, it will not get mapped to an uppercase variant, resulting in "CAF\u{e9}"
.
type Owned
Container type for copied ASCII characters.
fn is_ascii(&self) -> bool
Checks if the value is within the ASCII range.
use std::ascii::AsciiExt; let ascii = 'a'; let utf8 = '❤'; assert!(ascii.is_ascii()); assert!(!utf8.is_ascii());
fn to_ascii_uppercase(&self) -> Self::Owned
Makes a copy of the string in ASCII upper case.
ASCII letters 'a' to 'z' are mapped to 'A' to 'Z', but non-ASCII letters are unchanged.
To uppercase the string in-place, use make_ascii_uppercase
.
To uppercase ASCII characters in addition to non-ASCII characters, use str::to_uppercase
.
use std::ascii::AsciiExt; let ascii = 'a'; let utf8 = '❤'; assert_eq!('A', ascii.to_ascii_uppercase()); assert_eq!('❤', utf8.to_ascii_uppercase());
fn to_ascii_lowercase(&self) -> Self::Owned
Makes a copy of the string in ASCII lower case.
ASCII letters 'A' to 'Z' are mapped to 'a' to 'z', but non-ASCII letters are unchanged.
To lowercase the string in-place, use make_ascii_lowercase
.
To lowercase ASCII characters in addition to non-ASCII characters, use str::to_lowercase
.
use std::ascii::AsciiExt; let ascii = 'A'; let utf8 = '❤'; assert_eq!('a', ascii.to_ascii_lowercase()); assert_eq!('❤', utf8.to_ascii_lowercase());
fn eq_ignore_ascii_case(&self, other: &Self) -> bool
Checks that two strings are an ASCII case-insensitive match.
Same as to_ascii_lowercase(a) == to_ascii_lowercase(b)
, but without allocating and copying temporary strings.
use std::ascii::AsciiExt; let ascii1 = 'A'; let ascii2 = 'a'; let ascii3 = 'A'; let ascii4 = 'z'; assert!(ascii1.eq_ignore_ascii_case(&ascii2)); assert!(ascii1.eq_ignore_ascii_case(&ascii3)); assert!(!ascii1.eq_ignore_ascii_case(&ascii4));
fn make_ascii_uppercase(&mut self)
Converts this type to its ASCII upper case equivalent in-place.
ASCII letters 'a' to 'z' are mapped to 'A' to 'Z', but non-ASCII letters are unchanged.
To return a new uppercased string without modifying the existing one, use to_ascii_uppercase
.
use std::ascii::AsciiExt; let mut ascii = 'a'; ascii.make_ascii_uppercase(); assert_eq!('A', ascii);
fn make_ascii_lowercase(&mut self)
Converts this type to its ASCII lower case equivalent in-place.
ASCII letters 'A' to 'Z' are mapped to 'a' to 'z', but non-ASCII letters are unchanged.
To return a new lowercased string without modifying the existing one, use to_ascii_lowercase
.
use std::ascii::AsciiExt; let mut ascii = 'A'; ascii.make_ascii_lowercase(); assert_eq!('a', ascii);
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ascii/trait.AsciiExt.html