From 1d2e3fff69b654c3dfd6a810e193db29bb1868fa Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 25 Jul 2020 18:57:42 +0200 Subject: [PATCH 1/2] Clean up E0730 explanation --- src/librustc_error_codes/error_codes/E0730.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/librustc_error_codes/error_codes/E0730.md b/src/librustc_error_codes/error_codes/E0730.md index c2a71ca5669a1..d385009063f78 100644 --- a/src/librustc_error_codes/error_codes/E0730.md +++ b/src/librustc_error_codes/error_codes/E0730.md @@ -1,6 +1,6 @@ An array without a fixed length was pattern-matched. -Example of erroneous code: +Erroneous code example: ```compile_fail,E0730 #![feature(const_generics)] @@ -14,8 +14,8 @@ fn is_123(x: [u32; N]) -> bool { } ``` -Ensure that the pattern is consistent with the size of the matched -array. Additional elements can be matched with `..`: +Ensure that the pattern is consistent with the size of the matched array. +Additional elements can be matched with `..`: ``` let r = &[1, 2, 3, 4]; From 89e4fe33130a17888a2add6baadd850653263242 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 30 Jul 2020 13:51:22 +0200 Subject: [PATCH 2/2] Improve E0730 explanation --- src/librustc_error_codes/error_codes/E0730.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/librustc_error_codes/error_codes/E0730.md b/src/librustc_error_codes/error_codes/E0730.md index d385009063f78..016b3f38aa310 100644 --- a/src/librustc_error_codes/error_codes/E0730.md +++ b/src/librustc_error_codes/error_codes/E0730.md @@ -14,14 +14,28 @@ fn is_123(x: [u32; N]) -> bool { } ``` -Ensure that the pattern is consistent with the size of the matched array. -Additional elements can be matched with `..`: +To fix this error, you have two solutions: + 1. Use an array with a fixed length. + 2. Use a slice. +Example with an array with a fixed length: + +``` +fn is_123(x: [u32; 3]) -> bool { // We use an array with a fixed size + match x { + [1, 2, ..] => true, // ok! + _ => false + } +} ``` -let r = &[1, 2, 3, 4]; -match r { - &[a, b, ..] => { // ok! - println!("a={}, b={}", a, b); + +Example with a slice: + +``` +fn is_123(x: &[u32]) -> bool { // We use a slice + match x { + [1, 2, ..] => true, // ok! + _ => false } } ```