From c6e2d20a02b523172aea8a22fa2ec6c8975b52e4 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:32:50 +0200 Subject: [PATCH] chore: Bump Rust version to 1.86 (#28021) Closes #ISSUE Release Notes: - N/A --- Dockerfile-collab | 2 +- crates/agent/src/active_thread.rs | 2 +- crates/collab/src/rpc.rs | 2 +- crates/file_finder/src/new_path_prompt.rs | 6 +++--- crates/git/src/status.rs | 2 +- crates/git_ui/src/picker_prompt.rs | 5 +---- crates/gpui/src/key_dispatch.rs | 2 +- crates/gpui/src/platform/mac/metal_renderer.rs | 2 +- crates/language/src/buffer.rs | 2 +- crates/language/src/language_registry.rs | 2 +- crates/project_panel/src/project_panel.rs | 2 +- crates/prompt_store/src/prompts.rs | 6 +++++- crates/rope/src/chunk.rs | 2 +- crates/vim/src/motion.rs | 2 +- crates/vim/src/test/neovim_backed_test_context.rs | 4 ++-- crates/zed/src/zed/open_listener.rs | 2 +- rust-toolchain.toml | 2 +- 17 files changed, 24 insertions(+), 23 deletions(-) diff --git a/Dockerfile-collab b/Dockerfile-collab index 507ad3be19..3c622d8fe1 100644 --- a/Dockerfile-collab +++ b/Dockerfile-collab @@ -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 . . diff --git a/crates/agent/src/active_thread.rs b/crates/agent/src/active_thread.rs index 933f7bd0b7..41fa39f377 100644 --- a/crates/agent/src/active_thread.rs +++ b/crates/agent/src/active_thread.rs @@ -1429,7 +1429,7 @@ impl ActiveThread { .segments .iter() .enumerate() - .last() + .next_back() .filter(|(_, segment)| matches!(segment, RenderedMessageSegment::Thinking { .. })) .map(|(index, _)| index) } else { diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 813d541b23..7c448a4ea1 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -984,7 +984,7 @@ impl Server { } } - pub async fn snapshot<'a>(self: &'a Arc) -> ServerSnapshot<'a> { + pub async fn snapshot(self: &Arc) -> ServerSnapshot { ServerSnapshot { connection_pool: ConnectionPoolGuard { guard: self.connection_pool.lock(), diff --git a/crates/file_finder/src/new_path_prompt.rs b/crates/file_finder/src/new_path_prompt.rs index 87075ebb0c..e4d5ff0618 100644 --- a/crates/file_finder/src/new_path_prompt.rs +++ b/crates/file_finder/src/new_path_prompt.rs @@ -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)), )); } diff --git a/crates/git/src/status.rs b/crates/git/src/status.rs index 872a1a373b..6637c4612b 100644 --- a/crates/git/src/status.rs +++ b/crates/git/src/status.rs @@ -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)) diff --git a/crates/git_ui/src/picker_prompt.rs b/crates/git_ui/src/picker_prompt.rs index ec530bf5d3..4faf24d149 100644 --- a/crates/git_ui/src/picker_prompt.rs +++ b/crates/git_ui/src/picker_prompt.rs @@ -44,10 +44,7 @@ pub fn prompt( }) .ok(); - match rx.await { - Ok(selection) => Some(selection), - Err(_) => None, // User cancelled - } + (rx.await).ok() }) } diff --git a/crates/gpui/src/key_dispatch.rs b/crates/gpui/src/key_dispatch.rs index 96075c48b7..cb73300a52 100644 --- a/crates/gpui/src/key_dispatch.rs +++ b/crates/gpui/src/key_dispatch.rs @@ -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; diff --git a/crates/gpui/src/platform/mac/metal_renderer.rs b/crates/gpui/src/platform/mac/metal_renderer.rs index 832ffab5c3..cfbce9f7e0 100644 --- a/crates/gpui/src/platform/mac/metal_renderer.rs +++ b/crates/gpui/src/platform/mac/metal_renderer.rs @@ -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)] diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index 51ce39f07d..bf2b414976 100644 --- a/crates/language/src/buffer.rs +++ b/crates/language/src/buffer.rs @@ -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; } diff --git a/crates/language/src/language_registry.rs b/crates/language/src/language_registry.rs index e1de25c41b..a575e08022 100644 --- a/crates/language/src/language_registry.rs +++ b/crates/language/src/language_registry.rs @@ -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(); diff --git a/crates/project_panel/src/project_panel.rs b/crates/project_panel/src/project_panel.rs index 6808c514e6..ca18b417fb 100644 --- a/crates/project_panel/src/project_panel.rs +++ b/crates/project_panel/src/project_panel.rs @@ -3259,7 +3259,7 @@ impl ProjectPanel { .take(prefix_components) .collect::(); 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(); diff --git a/crates/prompt_store/src/prompts.rs b/crates/prompt_store/src/prompts.rs index d7ae16a8ea..26d1c99e8f 100644 --- a/crates/prompt_store/src/prompts.rs +++ b/crates/prompt_store/src/prompts.rs @@ -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()); diff --git a/crates/rope/src/chunk.rs b/crates/rope/src/chunk.rs index cf27f8a100..5b0a671d86 100644 --- a/crates/rope/src/chunk.rs +++ b/crates/rope/src/chunk.rs @@ -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(), diff --git a/crates/vim/src/motion.rs b/crates/vim/src/motion.rs index 5ce59cc1e3..7934739632 100644 --- a/crates/vim/src/motion.rs +++ b/crates/vim/src/motion.rs @@ -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(), diff --git a/crates/vim/src/test/neovim_backed_test_context.rs b/crates/vim/src/test/neovim_backed_test_context.rs index 271da1b291..e2189da86b 100644 --- a/crates/vim/src/test/neovim_backed_test_context.rs +++ b/crates/vim/src/test/neovim_backed_test_context.rs @@ -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 { diff --git a/crates/zed/src/zed/open_listener.rs b/crates/zed/src/zed/open_listener.rs index 9134b3e913..03e3778b7a 100644 --- a/crates/zed/src/zed/open_listener.rs +++ b/crates/zed/src/zed/open_listener.rs @@ -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::() { let Some(next) = parts.next() else { self.join_channel = Some(channel_id); diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 9d4fa8262b..f819e3b78e 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.85" +channel = "1.86" profile = "minimal" components = [ "rustfmt", "clippy" ] targets = [