Skip to content

Commit 9c139f4

Browse files
authored
syntax: simplify Hir::dot constructors
This also likely avoids a spurious alloc or two, although it assuredly doesn't matter in practice.
1 parent b12a276 commit 9c139f4

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

regex-syntax/src/hir/mod.rs

+24-28
Original file line numberDiff line numberDiff line change
@@ -658,34 +658,30 @@ impl Hir {
658658
#[inline]
659659
pub fn dot(dot: Dot) -> Hir {
660660
match dot {
661-
Dot::AnyChar => {
662-
let mut cls = ClassUnicode::empty();
663-
cls.push(ClassUnicodeRange::new('\0', '\u{10FFFF}'));
664-
Hir::class(Class::Unicode(cls))
665-
}
666-
Dot::AnyByte => {
667-
let mut cls = ClassBytes::empty();
668-
cls.push(ClassBytesRange::new(b'\0', b'\xFF'));
669-
Hir::class(Class::Bytes(cls))
670-
}
661+
Dot::AnyChar => Hir::class(Class::Unicode(ClassUnicode::new([
662+
ClassUnicodeRange::new('\0', '\u{10FFFF}'),
663+
]))),
664+
Dot::AnyByte => Hir::class(Class::Bytes(ClassBytes::new([
665+
ClassBytesRange::new(b'\0', b'\xFF'),
666+
]))),
671667
Dot::AnyCharExcept(ch) => {
672668
let mut cls =
673669
ClassUnicode::new([ClassUnicodeRange::new(ch, ch)]);
674670
cls.negate();
675671
Hir::class(Class::Unicode(cls))
676672
}
677673
Dot::AnyCharExceptLF => {
678-
let mut cls = ClassUnicode::empty();
679-
cls.push(ClassUnicodeRange::new('\0', '\x09'));
680-
cls.push(ClassUnicodeRange::new('\x0B', '\u{10FFFF}'));
681-
Hir::class(Class::Unicode(cls))
674+
Hir::class(Class::Unicode(ClassUnicode::new([
675+
ClassUnicodeRange::new('\0', '\x09'),
676+
ClassUnicodeRange::new('\x0B', '\u{10FFFF}'),
677+
])))
682678
}
683679
Dot::AnyCharExceptCRLF => {
684-
let mut cls = ClassUnicode::empty();
685-
cls.push(ClassUnicodeRange::new('\0', '\x09'));
686-
cls.push(ClassUnicodeRange::new('\x0B', '\x0C'));
687-
cls.push(ClassUnicodeRange::new('\x0E', '\u{10FFFF}'));
688-
Hir::class(Class::Unicode(cls))
680+
Hir::class(Class::Unicode(ClassUnicode::new([
681+
ClassUnicodeRange::new('\0', '\x09'),
682+
ClassUnicodeRange::new('\x0B', '\x0C'),
683+
ClassUnicodeRange::new('\x0E', '\u{10FFFF}'),
684+
])))
689685
}
690686
Dot::AnyByteExcept(byte) => {
691687
let mut cls =
@@ -694,17 +690,17 @@ impl Hir {
694690
Hir::class(Class::Bytes(cls))
695691
}
696692
Dot::AnyByteExceptLF => {
697-
let mut cls = ClassBytes::empty();
698-
cls.push(ClassBytesRange::new(b'\0', b'\x09'));
699-
cls.push(ClassBytesRange::new(b'\x0B', b'\xFF'));
700-
Hir::class(Class::Bytes(cls))
693+
Hir::class(Class::Bytes(ClassBytes::new([
694+
ClassBytesRange::new(b'\0', b'\x09'),
695+
ClassBytesRange::new(b'\x0B', b'\xFF'),
696+
])))
701697
}
702698
Dot::AnyByteExceptCRLF => {
703-
let mut cls = ClassBytes::empty();
704-
cls.push(ClassBytesRange::new(b'\0', b'\x09'));
705-
cls.push(ClassBytesRange::new(b'\x0B', b'\x0C'));
706-
cls.push(ClassBytesRange::new(b'\x0E', b'\xFF'));
707-
Hir::class(Class::Bytes(cls))
699+
Hir::class(Class::Bytes(ClassBytes::new([
700+
ClassBytesRange::new(b'\0', b'\x09'),
701+
ClassBytesRange::new(b'\x0B', b'\x0C'),
702+
ClassBytesRange::new(b'\x0E', b'\xFF'),
703+
])))
708704
}
709705
}
710706
}

0 commit comments

Comments
 (0)