pub enum NormalPatternKind {
Exact = 0,
Glob = 1,
Regex = 2,
}Expand description
普通模式类型,支持精确匹配、Glob模式和正则表达式
§示例
use dhttp_access::pattern::{NormalPattern, NormalPatternKind};
// 精确匹配
let pattern: NormalPattern = "= hello".parse().unwrap();
assert_eq!(pattern.kind(), &NormalPatternKind::Exact);
assert!(pattern.is_match("hello"));
assert!(!pattern.is_match("hello world"));
// Glob 模式(默认)
let pattern: NormalPattern = "*.txt".parse().unwrap();
assert_eq!(pattern.kind(), &NormalPatternKind::Glob);
assert!(pattern.is_match("file.txt"));
assert!(!pattern.is_match("file.doc"));
// Glob 模式(不区分大小写)
let pattern: NormalPattern = "* *.TXT".parse().unwrap();
assert_eq!(pattern.kind(), &NormalPatternKind::Glob);
assert!(pattern.is_match("file.txt"));
assert!(pattern.is_match("FILE.TXT"));
// 正则表达式
let pattern: NormalPattern = r"~ \d+".parse().unwrap();
assert_eq!(pattern.kind(), &NormalPatternKind::Regex);
assert!(pattern.is_match("123"));
assert!(!pattern.is_match("abc"));
// 正则表达式(不区分大小写)
let pattern: NormalPattern = "~* hello".parse().unwrap();
assert_eq!(pattern.kind(), &NormalPatternKind::Regex);
assert!(pattern.is_match("HELLO"));
assert!(pattern.is_match("hello"));Variants§
Exact = 0
精确匹配模式 - 语法:= pattern
§Examples
use dhttp_access::pattern::{NormalPattern, NormalPatternKind};
let pattern: NormalPattern = "= hello".parse().unwrap();
assert!(matches!(pattern.kind(), NormalPatternKind::Exact));
assert!(pattern.is_match("hello"));
assert!(!pattern.is_match("Hello"));
assert!(!pattern.is_match("hello world"));Glob = 1
Glob 模式匹配 - 语法:pattern (默认) 或 * pattern (不区分大小写)
§Examples
use dhttp_access::pattern::{NormalPattern, NormalPatternKind};
// 默认 glob 模式
let pattern: NormalPattern = "*.txt".parse().unwrap();
assert!(matches!(pattern.kind(), NormalPatternKind::Glob));
assert!(pattern.is_match("test.txt"));
assert!(pattern.is_match("hello.txt"));
assert!(!pattern.is_match("test.doc"));
// 不区分大小写的 glob 模式
let pattern: NormalPattern = "* *.TXT".parse().unwrap();
assert!(pattern.is_match("test.txt"));
assert!(pattern.is_match("TEST.TXT"));Regex = 2
正则表达式匹配 - 语法:~ regex 或 ~* regex (不区分大小写)
§Examples
use dhttp_access::pattern::{NormalPattern, NormalPatternKind};
// 区分大小写的正则
let pattern: NormalPattern = "~ test\\d+".parse().unwrap();
assert!(matches!(pattern.kind(), NormalPatternKind::Regex));
assert!(pattern.is_match("test123"));
assert!(!pattern.is_match("Test123"));
// 不区分大小写的正则
let pattern: NormalPattern = "~* test\\d+".parse().unwrap();
assert!(pattern.is_match("test123"));
assert!(pattern.is_match("Test123"));
assert!(pattern.is_match("TEST123"));Trait Implementations§
Source§impl AsRef<NormalPatternKind> for ClientNamePatternKind
impl AsRef<NormalPatternKind> for ClientNamePatternKind
Source§fn as_ref(&self) -> &NormalPatternKind
fn as_ref(&self) -> &NormalPatternKind
Converts this type into a shared reference of the (usually inferred) input type.
Source§impl AsRef<NormalPatternKind> for DomainPatternKind
impl AsRef<NormalPatternKind> for DomainPatternKind
Source§fn as_ref(&self) -> &NormalPatternKind
fn as_ref(&self) -> &NormalPatternKind
Converts this type into a shared reference of the (usually inferred) input type.
Source§impl Clone for NormalPatternKind
impl Clone for NormalPatternKind
Source§fn clone(&self) -> NormalPatternKind
fn clone(&self) -> NormalPatternKind
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for NormalPatternKind
Source§impl Debug for NormalPatternKind
impl Debug for NormalPatternKind
Source§impl<'de> Deserialize<'de> for NormalPatternKind
impl<'de> Deserialize<'de> for NormalPatternKind
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for NormalPatternKind
Source§impl From<ClientNamePatternKind> for NormalPatternKind
impl From<ClientNamePatternKind> for NormalPatternKind
Source§fn from(value: ClientNamePatternKind) -> Self
fn from(value: ClientNamePatternKind) -> Self
Converts to this type from the input type.
Source§impl From<DomainPatternKind> for NormalPatternKind
impl From<DomainPatternKind> for NormalPatternKind
Source§fn from(value: DomainPatternKind) -> Self
fn from(value: DomainPatternKind) -> Self
Converts to this type from the input type.
Source§impl From<NormalPatternKind> for ClientNamePatternKind
impl From<NormalPatternKind> for ClientNamePatternKind
Source§fn from(value: NormalPatternKind) -> Self
fn from(value: NormalPatternKind) -> Self
Converts to this type from the input type.
Source§impl From<NormalPatternKind> for DomainPatternKind
impl From<NormalPatternKind> for DomainPatternKind
Source§fn from(value: NormalPatternKind) -> Self
fn from(value: NormalPatternKind) -> Self
Converts to this type from the input type.
Source§impl Ord for NormalPatternKind
impl Ord for NormalPatternKind
Source§fn cmp(&self, other: &NormalPatternKind) -> Ordering
fn cmp(&self, other: &NormalPatternKind) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for NormalPatternKind
impl PartialEq for NormalPatternKind
Source§fn eq(&self, other: &NormalPatternKind) -> bool
fn eq(&self, other: &NormalPatternKind) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl PartialOrd for NormalPatternKind
impl PartialOrd for NormalPatternKind
Source§impl Serialize for NormalPatternKind
impl Serialize for NormalPatternKind
impl StructuralPartialEq for NormalPatternKind
Auto Trait Implementations§
impl Freeze for NormalPatternKind
impl RefUnwindSafe for NormalPatternKind
impl Send for NormalPatternKind
impl Sync for NormalPatternKind
impl Unpin for NormalPatternKind
impl UnsafeUnpin for NormalPatternKind
impl UnwindSafe for NormalPatternKind
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more