Enjoy rust 1.94
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
use std::iter::{self, once};
|
use std::iter;
|
||||||
|
|
||||||
use crate::markdown::Style;
|
use crate::markdown::Style;
|
||||||
|
|
||||||
@@ -142,18 +142,8 @@ fn collect_until<'a, const N: usize>(
|
|||||||
first_token: Option<&Token<'a>>,
|
first_token: Option<&Token<'a>>,
|
||||||
tokens: &mut &[Token<'a>],
|
tokens: &mut &[Token<'a>],
|
||||||
pattern: impl FnMut(&[Token<'a>; N]) -> bool,
|
pattern: impl FnMut(&[Token<'a>; N]) -> bool,
|
||||||
) -> Span<'a>
|
) -> Span<'a> {
|
||||||
where
|
let split_at = match tokens.array_windows::<N>().position(pattern) {
|
||||||
// &[T; N]: TryFrom<&[T]>
|
|
||||||
for<'b> &'b [Token<'a>; N]: TryFrom<&'b [Token<'a>]>,
|
|
||||||
{
|
|
||||||
let mut windows = tokens.windows(N).map(|slice| {
|
|
||||||
<&[Token<'a>; N]>::try_from(slice)
|
|
||||||
.ok()
|
|
||||||
.expect("`windows` promises to return slices of length N")
|
|
||||||
});
|
|
||||||
|
|
||||||
let split_at = match windows.position(pattern) {
|
|
||||||
Some(i) => i + N,
|
Some(i) => i + N,
|
||||||
None => tokens.len(), // consume everything
|
None => tokens.len(), // consume everything
|
||||||
};
|
};
|
||||||
@@ -161,8 +151,8 @@ where
|
|||||||
let (consume, keep) = tokens.split_at(split_at);
|
let (consume, keep) = tokens.split_at(split_at);
|
||||||
*tokens = keep;
|
*tokens = keep;
|
||||||
|
|
||||||
once(first_token)
|
first_token
|
||||||
.flatten()
|
.into_iter()
|
||||||
.chain(consume)
|
.chain(consume)
|
||||||
.fold(Span::empty(), |span: Span<'_>, token| {
|
.fold(Span::empty(), |span: Span<'_>, token| {
|
||||||
span.try_merge(&token.span).unwrap()
|
span.try_merge(&token.span).unwrap()
|
||||||
|
|||||||
Reference in New Issue
Block a user