From c2cbc9fe6eef6a10a5fd85f363e45bee7d6db9aa Mon Sep 17 00:00:00 2001 From: Botahamec Date: Sat, 29 Jul 2023 20:33:57 -0400 Subject: Create character sets --- src/csets.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 15 +-------------- 2 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 src/csets.rs (limited to 'src') diff --git a/src/csets.rs b/src/csets.rs new file mode 100644 index 0000000..ab924dc --- /dev/null +++ b/src/csets.rs @@ -0,0 +1,51 @@ +pub trait CharacterSet { + fn contains(ch: char) -> bool; +} + +pub struct AnyCharacter; + +impl CharacterSet for AnyCharacter { + fn contains(_: char) -> bool { + true + } +} + +pub struct Ascii; + +impl CharacterSet for Ascii { + fn contains(ch: char) -> bool { + ch.is_ascii() + } +} + +pub struct AsciiDigits; + +impl CharacterSet for AsciiDigits { + fn contains(ch: char) -> bool { + ch.is_ascii_digit() + } +} + +pub struct AsciiLowercase; + +impl CharacterSet for AsciiLowercase { + fn contains(ch: char) -> bool { + ch.is_ascii_lowercase() + } +} + +pub struct AsciiUppercase; + +impl CharacterSet for AsciiUppercase { + fn contains(ch: char) -> bool { + ch.is_ascii_uppercase() + } +} + +pub struct AsciiLetters; + +impl CharacterSet for AsciiLetters { + fn contains(ch: char) -> bool { + ch.is_ascii_alphabetic() + } +} diff --git a/src/lib.rs b/src/lib.rs index 7d12d9a..00a4d4b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,14 +1 @@ -pub fn add(left: usize, right: usize) -> usize { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub mod csets; -- cgit v1.2.3