Skip to content

Commit

Permalink
Rust: Work around 'error[E0658]: let...else statements are unstable'
Browse files Browse the repository at this point in the history
Compiling with Debian GNU/Linux 12 (bookworm) packages:

    $ apt-cache madison cargo rustc
         cargo | 0.66.0+ds1-1 | http://deb.debian.org/debian bookworm/main ppc64el Packages
         cargo | 0.66.0+ds1-1 | http://deb.debian.org/debian bookworm/main Sources
         rustc | 1.63.0+dfsg1-2 | http://deb.debian.org/debian bookworm/main ppc64el Packages
         rustc | 1.63.0+dfsg1-2 | http://deb.debian.org/debian bookworm/main Sources

..., we run into:

       Compiling generic_format_parser v0.1.0 ([...]/source-gcc/libgrust/libformat_parser/generic_format_parser)
    error[E0658]: `let...else` statements are unstable
       --> generic_format_parser/src/lib.rs:994:5
        |
    994 | /     let Some(unescaped) = unescape_string(snippet) else {
    995 | |         return InputStringKind::NotALiteral;
    996 | |     };
        | |______^
        |
        = note: see issue #87335 <rust-lang/rust#87335> for more information

Rewrite backwards, per <https://rust-lang.github.io/rfcs/3137-let-else.html>.

	libgrust/
	* libformat_parser/generic_format_parser/src/lib.rs: Work around
	'error[E0658]: `let...else` statements are unstable'.
  • Loading branch information
tschwinge committed Dec 9, 2024
1 parent 5cdd78b commit 85f81ba
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions libgrust/libformat_parser/generic_format_parser/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -991,8 +991,11 @@ fn find_width_map_from_snippet(
// If we only trimmed it off the input, `format!("\n")` would cause a mismatch as here we they actually match up.
// Alternatively, we could just count the trailing newlines and only trim one from the input if they don't match up.
let input_no_nl = input.trim_end_matches('\n');
let Some(unescaped) = unescape_string(snippet) else {
return InputStringKind::NotALiteral;
let unescaped = match unescape_string(snippet) {
Some(unescaped) => unescaped,
_ => {
return InputStringKind::NotALiteral;
}
};

let unescaped_no_nl = unescaped.trim_end_matches('\n');
Expand Down

0 comments on commit 85f81ba

Please sign in to comment.