Rollup merge of #76825 - lcnr:array-windows-apply, r=varkor
use `array_windows` instead of `windows` in the compiler I do think these changes are beautiful, but do have to admit that using type inference for the window length can easily be confusing. This seems like a general issue with const generics, where inferring constants adds an additional complexity which users have to learn and keep in mind.
This commit is contained in:
commit
50d56bc774
11 changed files with 24 additions and 20 deletions
|
@ -5,6 +5,7 @@
|
|||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
#![feature(array_windows)]
|
||||
#![feature(crate_visibility_modifier)]
|
||||
#![feature(const_fn)]
|
||||
#![feature(const_panic)]
|
||||
|
@ -1156,7 +1157,12 @@ impl<S: Encoder> Encodable<S> for SourceFile {
|
|||
let max_line_length = if lines.len() == 1 {
|
||||
0
|
||||
} else {
|
||||
lines.windows(2).map(|w| w[1] - w[0]).map(|bp| bp.to_usize()).max().unwrap()
|
||||
lines
|
||||
.array_windows()
|
||||
.map(|&[fst, snd]| snd - fst)
|
||||
.map(|bp| bp.to_usize())
|
||||
.max()
|
||||
.unwrap()
|
||||
};
|
||||
|
||||
let bytes_per_diff: u8 = match max_line_length {
|
||||
|
@ -1171,7 +1177,7 @@ impl<S: Encoder> Encodable<S> for SourceFile {
|
|||
// Encode the first element.
|
||||
lines[0].encode(s)?;
|
||||
|
||||
let diff_iter = (&lines[..]).windows(2).map(|w| (w[1] - w[0]));
|
||||
let diff_iter = lines[..].array_windows().map(|&[fst, snd]| snd - fst);
|
||||
|
||||
match bytes_per_diff {
|
||||
1 => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue