Change summary
crates/language/src/toolchain.rs | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
Detailed changes
@@ -14,7 +14,7 @@ use settings::WorktreeId;
use crate::LanguageName;
/// Represents a single toolchain.
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug)]
pub struct Toolchain {
/// User-facing label
pub name: SharedString,
@@ -24,6 +24,18 @@ pub struct Toolchain {
pub as_json: serde_json::Value,
}
+impl PartialEq for Toolchain {
+ fn eq(&self, other: &Self) -> bool {
+ // Do not use as_json for comparisons; it shouldn't impact equality, as it's not user-surfaced.
+ // Thus, there could be multiple entries that look the same in the UI.
+ (&self.name, &self.path, &self.language_name).eq(&(
+ &other.name,
+ &other.path,
+ &other.language_name,
+ ))
+ }
+}
+
#[async_trait]
pub trait ToolchainLister: Send + Sync {
async fn list(