chore: Bump Rust version to 1.80 (#15186)

Piotr Osiewicz created

Release Notes:

- N/A

Change summary

Dockerfile                                                |  2 
crates/assistant/src/slash_command/diagnostics_command.rs |  2 
crates/assistant/src/slash_command/file_command.rs        |  2 
crates/editor/src/editor.rs                               | 18 +------
crates/editor/src/selections_collection.rs                |  4 
crates/editor/src/test/editor_test_context.rs             |  2 
crates/file_finder/src/file_finder.rs                     | 20 ++++----
crates/fuzzy/src/matcher.rs                               |  7 ++
crates/fuzzy/src/paths.rs                                 |  2 
crates/gpui/src/platform/linux/wayland/client.rs          |  2 
crates/gpui/src/platform/linux/wayland/window.rs          |  1 
crates/gpui/src/shared_string.rs                          |  2 
crates/language/src/buffer.rs                             |  4 
crates/language/src/language.rs                           |  2 
crates/lsp/src/lsp.rs                                     |  2 
crates/markdown/src/markdown.rs                           | 11 ----
crates/multi_buffer/src/multi_buffer.rs                   |  2 
crates/project/src/project.rs                             |  2 
crates/rich_text/src/rich_text.rs                         | 15 ------
crates/tab_switcher/src/tab_switcher.rs                   |  2 
crates/worktree/src/worktree.rs                           |  4 
rust-toolchain.toml                                       |  2 
22 files changed, 43 insertions(+), 67 deletions(-)

Detailed changes

Dockerfile 🔗

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

crates/assistant/src/slash_command/diagnostics_command.rs 🔗

@@ -33,7 +33,7 @@ impl DiagnosticsSlashCommand {
         if query.is_empty() {
             let workspace = workspace.read(cx);
             let entries = workspace.recent_navigation_history(Some(10), cx);
-            let path_prefix: Arc<str> = "".into();
+            let path_prefix: Arc<str> = Arc::default();
             Task::ready(
                 entries
                     .into_iter()

crates/assistant/src/slash_command/file_command.rs 🔗

@@ -29,7 +29,7 @@ impl FileSlashCommand {
             let workspace = workspace.read(cx);
             let project = workspace.project().read(cx);
             let entries = workspace.recent_navigation_history(Some(10), cx);
-            let path_prefix: Arc<str> = "".into();
+            let path_prefix: Arc<str> = Arc::default();
             Task::ready(
                 entries
                     .into_iter()

crates/editor/src/editor.rs 🔗

@@ -408,6 +408,7 @@ impl EditorActionId {
 type BackgroundHighlight = (fn(&ThemeColors) -> Hsla, Arc<[Range<Anchor>]>);
 type GutterHighlight = (fn(&AppContext) -> Hsla, Arc<[Range<Anchor>]>);
 
+#[derive(Default)]
 struct ScrollbarMarkerState {
     scrollbar_size: Size<Pixels>,
     dirty: bool,
@@ -421,17 +422,6 @@ impl ScrollbarMarkerState {
     }
 }
 
-impl Default for ScrollbarMarkerState {
-    fn default() -> Self {
-        Self {
-            scrollbar_size: Size::default(),
-            dirty: false,
-            markers: Arc::from([]),
-            pending_refresh: None,
-        }
-    }
-}
-
 #[derive(Clone, Debug)]
 struct RunnableTasks {
     templates: Vec<(TaskSourceKind, TaskTemplate)>,
@@ -5730,7 +5720,7 @@ impl Editor {
 
         self.transact(cx, |this, cx| {
             this.buffer.update(cx, |buffer, cx| {
-                let empty_str: Arc<str> = "".into();
+                let empty_str: Arc<str> = Arc::default();
                 buffer.edit(
                     deletion_ranges
                         .into_iter()
@@ -5796,7 +5786,7 @@ impl Editor {
 
         self.transact(cx, |this, cx| {
             let buffer = this.buffer.update(cx, |buffer, cx| {
-                let empty_str: Arc<str> = "".into();
+                let empty_str: Arc<str> = Arc::default();
                 buffer.edit(
                     edit_ranges
                         .into_iter()
@@ -8097,7 +8087,7 @@ impl Editor {
             let mut selection_edit_ranges = Vec::new();
             let mut last_toggled_row = None;
             let snapshot = this.buffer.read(cx).read(cx);
-            let empty_str: Arc<str> = "".into();
+            let empty_str: Arc<str> = Arc::default();
             let mut suffixes_inserted = Vec::new();
 
             fn comment_prefix_range(

crates/editor/src/selections_collection.rs 🔗

@@ -44,7 +44,7 @@ impl SelectionsCollection {
             buffer,
             next_selection_id: 1,
             line_mode: false,
-            disjoint: Arc::from([]),
+            disjoint: Arc::default(),
             pending: Some(PendingSelection {
                 selection: Selection {
                     id: 0,
@@ -398,7 +398,7 @@ impl<'a> MutableSelectionsCollection<'a> {
     }
 
     pub fn clear_disjoint(&mut self) {
-        self.collection.disjoint = Arc::from([]);
+        self.collection.disjoint = Arc::default();
     }
 
     pub fn delete(&mut self, selection_id: usize) {

crates/editor/src/test/editor_test_context.rs 🔗

@@ -327,7 +327,7 @@ impl EditorTestContext {
                 .background_highlights
                 .get(&TypeId::of::<Tag>())
                 .map(|h| h.1.clone())
-                .unwrap_or_else(|| Arc::from([]))
+                .unwrap_or_else(|| Arc::default())
                 .into_iter()
                 .map(|range| range.to_offset(&snapshot.buffer_snapshot))
                 .collect()

crates/file_finder/src/file_finder.rs 🔗

@@ -998,7 +998,7 @@ mod tests {
                 positions: Vec::new(),
                 worktree_id: 0,
                 path: Arc::from(Path::new("b0.5")),
-                path_prefix: Arc::from(""),
+                path_prefix: Arc::default(),
                 distance_to_relative_ancestor: 0,
             }),
             ProjectPanelOrdMatch(PathMatch {
@@ -1006,7 +1006,7 @@ mod tests {
                 positions: Vec::new(),
                 worktree_id: 0,
                 path: Arc::from(Path::new("c1.0")),
-                path_prefix: Arc::from(""),
+                path_prefix: Arc::default(),
                 distance_to_relative_ancestor: 0,
             }),
             ProjectPanelOrdMatch(PathMatch {
@@ -1014,7 +1014,7 @@ mod tests {
                 positions: Vec::new(),
                 worktree_id: 0,
                 path: Arc::from(Path::new("a1.0")),
-                path_prefix: Arc::from(""),
+                path_prefix: Arc::default(),
                 distance_to_relative_ancestor: 0,
             }),
             ProjectPanelOrdMatch(PathMatch {
@@ -1022,7 +1022,7 @@ mod tests {
                 positions: Vec::new(),
                 worktree_id: 0,
                 path: Arc::from(Path::new("a0.5")),
-                path_prefix: Arc::from(""),
+                path_prefix: Arc::default(),
                 distance_to_relative_ancestor: 0,
             }),
             ProjectPanelOrdMatch(PathMatch {
@@ -1030,7 +1030,7 @@ mod tests {
                 positions: Vec::new(),
                 worktree_id: 0,
                 path: Arc::from(Path::new("b1.0")),
-                path_prefix: Arc::from(""),
+                path_prefix: Arc::default(),
                 distance_to_relative_ancestor: 0,
             }),
         ];
@@ -1044,7 +1044,7 @@ mod tests {
                     positions: Vec::new(),
                     worktree_id: 0,
                     path: Arc::from(Path::new("a1.0")),
-                    path_prefix: Arc::from(""),
+                    path_prefix: Arc::default(),
                     distance_to_relative_ancestor: 0,
                 }),
                 ProjectPanelOrdMatch(PathMatch {
@@ -1052,7 +1052,7 @@ mod tests {
                     positions: Vec::new(),
                     worktree_id: 0,
                     path: Arc::from(Path::new("b1.0")),
-                    path_prefix: Arc::from(""),
+                    path_prefix: Arc::default(),
                     distance_to_relative_ancestor: 0,
                 }),
                 ProjectPanelOrdMatch(PathMatch {
@@ -1060,7 +1060,7 @@ mod tests {
                     positions: Vec::new(),
                     worktree_id: 0,
                     path: Arc::from(Path::new("c1.0")),
-                    path_prefix: Arc::from(""),
+                    path_prefix: Arc::default(),
                     distance_to_relative_ancestor: 0,
                 }),
                 ProjectPanelOrdMatch(PathMatch {
@@ -1068,7 +1068,7 @@ mod tests {
                     positions: Vec::new(),
                     worktree_id: 0,
                     path: Arc::from(Path::new("a0.5")),
-                    path_prefix: Arc::from(""),
+                    path_prefix: Arc::default(),
                     distance_to_relative_ancestor: 0,
                 }),
                 ProjectPanelOrdMatch(PathMatch {
@@ -1076,7 +1076,7 @@ mod tests {
                     positions: Vec::new(),
                     worktree_id: 0,
                     path: Arc::from(Path::new("b0.5")),
-                    path_prefix: Arc::from(""),
+                    path_prefix: Arc::default(),
                     distance_to_relative_ancestor: 0,
                 }),
             ]

crates/fuzzy/src/matcher.rs 🔗

@@ -404,7 +404,12 @@ mod tests {
 
     #[test]
     fn test_match_multibyte_path_entries() {
-        let paths = vec!["aαbβ/cγdδ", "αβγδ/bcde", "c1️⃣2️⃣3️⃣/d4️⃣5️⃣6️⃣/e7️⃣8️⃣9️⃣/f", "/d/🆒/h"];
+        let paths = vec![
+            "aαbβ/cγdδ",
+            "αβγδ/bcde",
+            "c1️⃣2️⃣3️⃣/d4️⃣5️⃣6️⃣/e7️⃣8️⃣9️⃣/f",
+            "/d/🆒/h",
+        ];
         assert_eq!("1️⃣".len(), 7);
         assert_eq!(
             match_single_path_query("bcd", false, &paths),

crates/fuzzy/src/paths.rs 🔗

@@ -120,7 +120,7 @@ pub fn match_fixed_path_set(
             worktree_id,
             positions: Vec::new(),
             path: Arc::from(candidate.path),
-            path_prefix: Arc::from(""),
+            path_prefix: Arc::default(),
             distance_to_relative_ancestor: usize::MAX,
         },
     );

crates/gpui/src/platform/linux/wayland/client.rs 🔗

@@ -395,6 +395,7 @@ impl WaylandClient {
         let qh = event_queue.handle();
 
         let mut seat: Option<wl_seat::WlSeat> = None;
+        #[allow(clippy::mutable_key_type)]
         let mut in_progress_outputs = HashMap::default();
         globals.contents().with_list(|list| {
             for global in list {
@@ -874,6 +875,7 @@ impl Dispatch<wl_surface::WlSurface, ()> for WaylandClientStatePtr {
         let Some(window) = get_window(&mut state, &surface.id()) else {
             return;
         };
+        #[allow(clippy::mutable_key_type)]
         let outputs = state.outputs.clone();
         drop(state);
 

crates/gpui/src/shared_string.rs 🔗

@@ -10,7 +10,7 @@ pub struct SharedString(ArcCow<'static, str>);
 
 impl Default for SharedString {
     fn default() -> Self {
-        Self(ArcCow::Owned("".into()))
+        Self(ArcCow::Owned(Arc::default()))
     }
 }
 

crates/language/src/buffer.rs 🔗

@@ -1402,7 +1402,7 @@ impl Buffer {
                 LineEnding::normalize(&mut new_text);
 
                 let diff = TextDiff::from_chars(old_text.as_str(), new_text.as_str());
-                let empty: Arc<str> = "".into();
+                let empty: Arc<str> = Arc::default();
 
                 let mut edits = Vec::new();
                 let mut old_offset = 0;
@@ -1720,7 +1720,7 @@ impl Buffer {
             .get(&self.text.replica_id())
             .map_or(true, |set| !set.selections.is_empty())
         {
-            self.set_active_selections(Arc::from([]), false, Default::default(), cx);
+            self.set_active_selections(Arc::default(), false, Default::default(), cx);
         }
     }
 

crates/language/src/language.rs 🔗

@@ -682,7 +682,7 @@ impl<T> Override<T> {
 impl Default for LanguageConfig {
     fn default() -> Self {
         Self {
-            name: "".into(),
+            name: Arc::default(),
             code_fence_block_name: None,
             grammar: None,
             matcher: LanguageMatcher::default(),

crates/lsp/src/lsp.rs 🔗

@@ -389,7 +389,7 @@ impl LanguageServer {
             notification_handlers,
             response_handlers,
             io_handlers,
-            name: "".into(),
+            name: Arc::default(),
             capabilities: Default::default(),
             code_action_kinds,
             next_id: Default::default(),

crates/markdown/src/markdown.rs 🔗

@@ -216,7 +216,7 @@ impl Selection {
     }
 }
 
-#[derive(Clone)]
+#[derive(Clone, Default)]
 pub struct ParsedMarkdown {
     source: SharedString,
     events: Arc<[(Range<usize>, MarkdownEvent)]>,
@@ -232,15 +232,6 @@ impl ParsedMarkdown {
     }
 }
 
-impl Default for ParsedMarkdown {
-    fn default() -> Self {
-        Self {
-            source: SharedString::default(),
-            events: Arc::from([]),
-        }
-    }
-}
-
 pub struct MarkdownElement {
     markdown: View<Markdown>,
     style: MarkdownStyle,

crates/multi_buffer/src/multi_buffer.rs 🔗

@@ -673,7 +673,7 @@ impl MultiBuffer {
                         let mut insertions = Vec::new();
                         let mut original_indent_columns = Vec::new();
                         let mut deletions = Vec::new();
-                        let empty_str: Arc<str> = "".into();
+                        let empty_str: Arc<str> = Arc::default();
                         while let Some(BufferEdit {
                             mut range,
                             new_text,

crates/project/src/project.rs 🔗

@@ -10844,7 +10844,7 @@ impl<'a> fuzzy::PathMatchCandidateSet<'a> for PathMatchCandidateSet {
         } else if self.include_root_name {
             format!("{}/", self.snapshot.root_name()).into()
         } else {
-            "".into()
+            Arc::default()
         }
     }
 

crates/rich_text/src/rich_text.rs 🔗

@@ -31,7 +31,7 @@ impl From<HighlightId> for Highlight {
     }
 }
 
-#[derive(Clone)]
+#[derive(Clone, Default)]
 pub struct RichText {
     pub text: SharedString,
     pub highlights: Vec<(Range<usize>, Highlight)>,
@@ -43,19 +43,6 @@ pub struct RichText {
         Option<Arc<dyn Fn(usize, Range<usize>, &mut WindowContext) -> Option<AnyView>>>,
 }
 
-impl Default for RichText {
-    fn default() -> Self {
-        Self {
-            text: SharedString::default(),
-            highlights: Vec::new(),
-            link_ranges: Vec::new(),
-            link_urls: Arc::from([]),
-            custom_ranges: Vec::new(),
-            custom_ranges_tooltip_fn: None,
-        }
-    }
-}
-
 /// Allows one to specify extra links to the rendered markdown, which can be used
 /// for e.g. mentions.
 #[derive(Debug)]

crates/tab_switcher/src/tab_switcher.rs 🔗

@@ -264,7 +264,7 @@ impl PickerDelegate for TabSwitcherDelegate {
     type ListItem = ListItem;
 
     fn placeholder_text(&self, _cx: &mut WindowContext) -> Arc<str> {
-        "".into()
+        Arc::default()
     }
 
     fn no_matches_text(&self, _cx: &mut WindowContext) -> SharedString {

crates/worktree/src/worktree.rs 🔗

@@ -510,7 +510,7 @@ impl Worktree {
                                 }
                             }
                         };
-                        cx.emit(Event::UpdatedEntries(Arc::from([])));
+                        cx.emit(Event::UpdatedEntries(Arc::default()));
                         cx.notify();
                         while let Some((scan_id, _)) = this.snapshot_subscriptions.front() {
                             if this.observed_snapshot(*scan_id) {
@@ -1698,7 +1698,7 @@ impl LocalWorktree {
         let (snapshots_tx, mut snapshots_rx) =
             mpsc::unbounded::<(LocalSnapshot, UpdatedEntriesSet, UpdatedGitRepositoriesSet)>();
         snapshots_tx
-            .unbounded_send((self.snapshot(), Arc::from([]), Arc::from([])))
+            .unbounded_send((self.snapshot(), Arc::default(), Arc::default()))
             .ok();
 
         let worktree_id = cx.entity_id().as_u64();

rust-toolchain.toml 🔗

@@ -1,5 +1,5 @@
 [toolchain]
-channel = "1.79"
+channel = "1.80"
 profile = "minimal"
 components = [ "rustfmt", "clippy" ]
 targets = [ "x86_64-apple-darwin", "aarch64-apple-darwin", "x86_64-unknown-linux-gnu", "wasm32-wasi" ]