chore: Bump Rust version to 1.86 (#28021)

Closes #ISSUE

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz 2025-04-03 23:32:50 +02:00 committed by GitHub
parent 7492ec3f67
commit c6e2d20a02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 24 additions and 23 deletions

View File

@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.2
FROM rust:1.81-bookworm as builder
FROM rust:1.86-bookworm as builder
WORKDIR app
COPY . .

View File

@ -1429,7 +1429,7 @@ impl ActiveThread {
.segments
.iter()
.enumerate()
.last()
.next_back()
.filter(|(_, segment)| matches!(segment, RenderedMessageSegment::Thinking { .. }))
.map(|(index, _)| index)
} else {

View File

@ -984,7 +984,7 @@ impl Server {
}
}
pub async fn snapshot<'a>(self: &'a Arc<Self>) -> ServerSnapshot<'a> {
pub async fn snapshot(self: &Arc<Self>) -> ServerSnapshot {
ServerSnapshot {
connection_pool: ConnectionPoolGuard {
guard: self.connection_pool.lock(),

View File

@ -150,14 +150,14 @@ impl Match {
text.push_str(dir_indicator);
highlights.push((
offset..offset + dir_indicator.bytes().len(),
offset..offset + dir_indicator.len(),
HighlightStyle::color(Color::Muted.color(cx)),
));
}
} else {
text.push_str(dir_indicator);
highlights.push((
offset..offset + dir_indicator.bytes().len(),
offset..offset + dir_indicator.len(),
HighlightStyle::color(Color::Muted.color(cx)),
))
}
@ -186,7 +186,7 @@ impl Match {
if suffix.ends_with('/') {
text.push_str(dir_indicator);
highlights.push((
offset..offset + dir_indicator.bytes().len(),
offset..offset + dir_indicator.len(),
HighlightStyle::color(Color::Muted.color(cx)),
));
}

View File

@ -462,7 +462,7 @@ impl FromStr for GitStatus {
if path.ends_with('/') {
return None;
}
let status = entry[0..2].as_bytes().try_into().unwrap();
let status = entry.as_bytes()[0..2].try_into().unwrap();
let status = FileStatus::from_bytes(status).log_err()?;
let path = RepoPath(Path::new(path).into());
Some((path, status))

View File

@ -44,10 +44,7 @@ pub fn prompt(
})
.ok();
match rx.await {
Ok(selection) => Some(selection),
Err(_) => None, // User cancelled
}
(rx.await).ok()
})
}

View File

@ -488,7 +488,7 @@ impl DispatchTree {
let (bindings, _) = self.bindings_for_input(&input[0..=last], dispatch_path);
if !bindings.is_empty() {
to_replay.push(Replay {
keystroke: input.drain(0..=last).last().unwrap(),
keystroke: input.drain(0..=last).next_back().unwrap(),
bindings,
});
break;

View File

@ -1211,7 +1211,7 @@ fn build_path_rasterization_pipeline_state(
// Align to multiples of 256 make Metal happy.
fn align_offset(offset: &mut usize) {
*offset = ((*offset + 255) / 256) * 256;
*offset = (*offset).div_ceil(256) * 256;
}
#[repr(C)]

View File

@ -2876,7 +2876,7 @@ impl BufferSnapshot {
if let Some(range_to_truncate) = indent_ranges
.iter_mut()
.filter(|indent_range| indent_range.contains(&outdent_position))
.last()
.next_back()
{
range_to_truncate.end = outdent_position;
}

View File

@ -680,7 +680,7 @@ impl LanguageRegistry {
// `Path.extension()` returns None for files with a leading '.'
// and no other extension which is not the desired behavior here,
// as we want `.zshrc` to result in extension being `Some("zshrc")`
let extension = filename.and_then(|filename| filename.split('.').last());
let extension = filename.and_then(|filename| filename.split('.').next_back());
let path_suffixes = [extension, filename, path.to_str()];
let empty = GlobSet::empty();

View File

@ -3259,7 +3259,7 @@ impl ProjectPanel {
.take(prefix_components)
.collect::<PathBuf>();
if let Some(last_component) =
Path::new(processing_filename).components().last()
Path::new(processing_filename).components().next_back()
{
new_path.push(last_component);
previous_components.next();

View File

@ -241,7 +241,11 @@ impl PromptBuilder {
fn register_built_in_templates(handlebars: &mut Handlebars) -> Result<()> {
for path in Assets.list("prompts")? {
if let Some(id) = path.split('/').last().and_then(|s| s.strip_suffix(".hbs")) {
if let Some(id) = path
.split('/')
.next_back()
.and_then(|s| s.strip_suffix(".hbs"))
{
if let Some(prompt) = Assets.load(path.as_ref()).log_err().flatten() {
log::debug!("Registering built-in prompt template: {}", id);
let prompt = String::from_utf8_lossy(prompt.as_ref());

View File

@ -906,7 +906,7 @@ mod tests {
let first_line = text.split('\n').next().unwrap();
assert_eq!(chunk.first_line_chars(), first_line.chars().count() as u32);
let last_line = text.split('\n').last().unwrap();
let last_line = text.split('\n').next_back().unwrap();
assert_eq!(chunk.last_line_chars(), last_line.chars().count() as u32);
assert_eq!(
chunk.last_line_len_utf16(),

View File

@ -2174,7 +2174,7 @@ fn matching(map: &DisplaySnapshot, display_point: DisplayPoint) -> DisplayPoint
// https://neovim.io/doc/user/motion.html#N%25
fn go_to_percentage(map: &DisplaySnapshot, point: DisplayPoint, count: usize) -> DisplayPoint {
let total_lines = map.buffer_snapshot.max_point().row + 1;
let target_line = (count * total_lines as usize + 99) / 100;
let target_line = (count * total_lines as usize).div_ceil(100);
let target_point = DisplayPoint::new(
DisplayRow(target_line.saturating_sub(1) as u32),
point.column(),

View File

@ -147,7 +147,7 @@ impl NeovimBackedTestContext {
.name()
.expect("thread is not named")
.split(':')
.last()
.next_back()
.unwrap()
.to_string();
Self {
@ -171,7 +171,7 @@ impl NeovimBackedTestContext {
.name()
.expect("thread is not named")
.split(':')
.last()
.next_back()
.unwrap()
.to_string();
Self {

View File

@ -103,7 +103,7 @@ impl OpenRequest {
let mut parts = request_path.split('/');
if parts.next() == Some("channel") {
if let Some(slug) = parts.next() {
if let Some(id_str) = slug.split('-').last() {
if let Some(id_str) = slug.split('-').next_back() {
if let Ok(channel_id) = id_str.parse::<u64>() {
let Some(next) = parts.next() else {
self.join_channel = Some(channel_id);

View File

@ -1,5 +1,5 @@
[toolchain]
channel = "1.85"
channel = "1.86"
profile = "minimal"
components = [ "rustfmt", "clippy" ]
targets = [