aboutsummaryrefslogtreecommitdiff
path: root/libgrust
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2024-02-26 11:55:47 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2024-08-01 13:11:29 +0200
commit433fbb156898c256c38a9ee137a51a42fe9177ee (patch)
treea5f85705861683401996ad0455856487c6518a12 /libgrust
parentf7dafa7d4bba993a32f8883967babddf8510772c (diff)
downloadgcc-433fbb156898c256c38a9ee137a51a42fe9177ee.zip
gcc-433fbb156898c256c38a9ee137a51a42fe9177ee.tar.gz
gcc-433fbb156898c256c38a9ee137a51a42fe9177ee.tar.bz2
gccrs: format-parser: Add `is_some_and` method for Option<T>
Workaround for Ubuntu 18.04, since we still use it for the GCC 4.8 CI. The default Rust package is 1.65 (and unlikely to change I assume?), but the generic format parser library uses `is_some_and` which was introduced in 1.70. So this is a simple reimplementation, directly taken from the standard library sources. libgrust/ChangeLog: * libformat_parser/generic_format_parser/src/lib.rs: Add IsSomeAnd<T> trait, impl it for Option<T>.
Diffstat (limited to 'libgrust')
-rw-r--r--libgrust/libformat_parser/generic_format_parser/src/lib.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/libgrust/libformat_parser/generic_format_parser/src/lib.rs b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
index 6a36617..8062bf9 100644
--- a/libgrust/libformat_parser/generic_format_parser/src/lib.rs
+++ b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
@@ -22,6 +22,22 @@ fn is_id_continue(c: char) -> bool {
unicode_xid::UnicodeXID::is_xid_continue(c)
}
+// Workaround for Ubuntu 18.04. The default Rust package is 1.65 (and unlikely to change I assume?), but the
+// generic format parser library uses `is_some_and` which was introduced in 1.70. So this is a reimplementation,
+// directly taken from the standard library sources
+trait IsSomeAnd<T> {
+ fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool;
+}
+
+impl<T> IsSomeAnd<T> for Option<T> {
+ fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool {
+ match self {
+ None => false,
+ Some(x) => f(x),
+ }
+ }
+}
+
// use rustc_lexer::unescape;
pub use Alignment::*;
pub use Count::*;