zed/tooling/lints/test_fixture/gpui_shared_string/src/lib.rs
Miguel Raz Guzmán Macedo 4b7369481d
Add dylint lint library for Zed-specific patterns (#58496)
Adds a dylint library under tooling/lints that flags Zed-specific
anti-patterns:

* shared_string_from_str_literal, 
* async_block_without_await, 
* entity_update_in_render, 
* notify_in_render, 
* owned_string_into_shared, 
* len_in_loop_condition, and 
* blocking_io_on_foreground. 

Includes UI tests, a single-lint helper, and workspace.metadata.dylint
registration so cargo dylint --all discovers it. The library pins its
own nightly toolchain (kept out of the main workspace) and tracks dylint
6.

Release Notes:

- N/A

Self-Review Checklist:

- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable

Closes #ISSUE

Release Notes:

- N/A or Added/Fixed/Improved ...
2026-07-03 22:05:34 +00:00

31 lines
815 B
Rust

//! Minimal stand-in for the real `gpui_shared_string` crate. The lint keys
//! off the crate name and the type name `SharedString`, so we only need to
//! reproduce those.
#[derive(Clone)]
pub struct SharedString(String);
impl SharedString {
pub const fn new_static(s: &'static str) -> Self {
// The real implementation stores the `'static` pointer; we just wrap
// an empty String at compile time to keep this `const`.
let _ = s;
SharedString(String::new())
}
pub fn new(s: impl AsRef<str>) -> Self {
SharedString(s.as_ref().to_owned())
}
}
impl From<&str> for SharedString {
fn from(s: &str) -> Self {
SharedString(s.to_owned())
}
}
impl From<String> for SharedString {
fn from(s: String) -> Self {
SharedString(s)
}
}