Array patterns currently match on either &[T] or [T, ..n]:
let x: &[int] = &[1, 2, 3];
let y: Box<[int]> = box [1, 2, 3];
let z: [int, ..3] = [1, 2, 3];
// Does not work
match x {
&[1, 2, 3] => {},
_ => {},
}
// Does not work
match y {
box [1, 2, 3] => {},
_ => {},
}
// Does work
match z {
[1, 2, 3] => {},
_ => {},
}
// Does work
match x {
[1, 2, 3] => {},
_ => {},
}
Logically, array patterns should only work on the bare array types, [T, ..n] and [T]. That would mean that all array patterns that match on &[T] would have to be prefixed by &, but it would also allow matching on Box<[T]> (and hypothetically, Rc<[T]>, Arc<[T]> etc. eventually). Has this already been considered (perhaps as part of DST)?
Array patterns currently match on either
&[T]or[T, ..n]:Logically, array patterns should only work on the bare array types,
[T, ..n]and[T]. That would mean that all array patterns that match on&[T]would have to be prefixed by&, but it would also allow matching onBox<[T]>(and hypothetically,Rc<[T]>,Arc<[T]>etc. eventually). Has this already been considered (perhaps as part of DST)?