[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5712":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},5712,"rustowl","cordx56\u002Frustowl","cordx56","Visualize Ownership and Lifetimes in Rust","",null,"Rust",5148,111,12,10,0,1,4,26,3,68.75,"Mozilla Public License 2.0",false,"main",true,[27,28,29,30],"lifetime","ownership","rust","visualization","2026-06-12 04:00:26","\u003Cdiv align=\"center\">\n    \u003Ch1>\n      \u003Cpicture>\n        \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs\u002Fassets\u002Frustowl-logo-dark.svg\">\n        \u003Cimg alt=\"RustOwl\" src=\"docs\u002Fassets\u002Frustowl-logo.svg\" width=\"400\">\n      \u003C\u002Fpicture>\n    \u003C\u002Fh1>\n    \u003Cp>\n      Visualize ownership and lifetimes in Rust for debugging and optimization\n    \u003C\u002Fp>\n    \u003Cp>\n      You can try out RustOwl on \u003Ca href=\"https:\u002F\u002Fplay.rustowl.rs\u002F\">play.rustowl.rs\u003C\u002Fa>\n    \u003C\u002Fp>\n    \u003Cp>\n      \u003Cfont size=\"4\">\n          \u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Frustowl\">\n              \u003Cimg alt=\"Crates.io Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Frustowl?style=for-the-badge\">\n          \u003C\u002Fa>\n          \u003Ca href=\"https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Frustowl-bin\">\n              \u003Cimg alt=\"AUR Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Faur\u002Fversion\u002Frustowl-bin?style=for-the-badge\">\n          \u003C\u002Fa>\n          \u003Cimg alt=\"WinGet Package Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fwinget\u002Fv\u002FCordx56.Rustowl?style=for-the-badge\">\n      \u003C\u002Ffont>\n    \u003C\u002Fp>\n    \u003Cp>\n      \u003Cfont size=\"4\">\n          \u003Ca href=\"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=cordx56.rustowl-vscode\">\n              \u003Cimg alt=\"VS Code Static Badge\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS_Code-Marketplace-%234daafc?style=for-the-badge\">\n          \u003C\u002Fa>\n          \u003Ca href=\"https:\u002F\u002Fopen-vsx.org\u002Fextension\u002Fcordx56\u002Frustowl-vscode\">\n              \u003Cimg alt=\"Open VSX Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fopen-vsx\u002Fv\u002Fcordx56\u002Frustowl-vscode?style=for-the-badge\">\n          \u003C\u002Fa>\n          \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsiketyan\u002Fintellij-rustowl\">\n              \u003Cimg alt=\"JetBrains Plugin Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fjetbrains\u002Fplugin\u002Fv\u002F26504-rustowl?style=for-the-badge\">\n          \u003C\u002Fa>\n      \u003C\u002Ffont>\n    \u003C\u002Fp>\n    \u003Cp>\n      \u003Cfont size=\"4\">\n          \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FXbxN949dpG\">\n              \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1379759912942436372?style=for-the-badge&logo=discord\">\n          \u003C\u002Fa>\n      \u003C\u002Ffont>\n    \u003C\u002Fp>\n    \u003Cp>\n        \u003Cimg src=\"docs\u002Fassets\u002Freadme-screenshot-3.png\" \u002F>\n    \u003C\u002Fp>\n\u003C\u002Fdiv>\n\nRustOwl visualizes ownership movement and lifetimes of variables.\nWhen you save Rust source code, it is analyzed, and the ownership and lifetimes of variables are visualized when you hover over a variable or function call.\n\nRustOwl visualizes those by using underlines:\n\n- 🟩 green: variable's actual lifetime\n  - **definitely live**: the variable is provably initialized on every path reaching this point\n  - **maybe live**: the variable is initialized on some paths but may have been moved, dropped, or be uninitialized on others\n- 🟦 blue: immutable borrowing\n- 🟪 purple: mutable borrowing\n- 🟧 orange: value moved \u002F function call\n- 🟥 red: lifetime error\n  - Diff of lifetime between actual and expected, or\n  - Invalid overlapped lifetime of mutable and shared (immutable) references\n\nDetailed usage is described [here](docs\u002Fusage.md).\n\nCurrently, we offer VSCode extension, Neovim plugin and Emacs package.\nFor these editors, move the text cursor over the variable or function call you want to inspect and wait for 2 seconds to visualize the information.\nWe implemented LSP server with an extended protocol.\nSo, RustOwl can be used easily from other editor.\n\n## Table Of Contents\n\n\u003C!--toc:start-->\n\n- [Table Of Contents](#table-of-contents)\n- [Support](#support)\n- [Quick Start](#quick-start)\n  - [Prerequisite](#prerequisite)\n  - [VS Code](#vs-code)\n  - [Vscodium](#vscodium)\n- [Other editor support](#other-editor-support)\n  - [Neovim](#neovim)\n  - [Emacs](#emacs)\n  - [RustRover \u002F IntelliJ IDEs](#rustrover--intellij-ides)\n  - [Sublime Text](#sublime-text)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Note](#note)\n\u003C!--toc:end-->\n\n## Support\n\nIf you're looking for support, please consider checking all issues, existing discussions, and [starting a discussion](https:\u002F\u002Fgithub.com\u002Fcordx56\u002Frustowl\u002Fdiscussions\u002Fnew?category=q-a) first!\n\nAlso, you can reach out to us on the Discord server provided above.\n\n## Quick Start\n\nHere we describe how to start using RustOwl.\n\n### Prerequisite\n\n- `cargo` installed\n  - You can install `cargo` using `rustup` from [this link](https:\u002F\u002Frustup.rs\u002F).\n- Visual Studio Code (VS Code) installed\n\nWe tested this guide on macOS Sequoia 15.3.2 on arm64 architecture with VS Code 1.99.3 and `cargo` 1.90.0.\n\n### VS Code\n\nYou can install VS Code extension from [this link](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=cordx56.rustowl-vscode).\nRustOwl will be installed automatically when the extension is activated.\n\nFor more detailed configuration options, see the [VS Code Configuration Guide](docs\u002Fvscode-configuration.md).\n\n### Vscodium\n\nYou can install Vscodium extension from [this link](https:\u002F\u002Fopen-vsx.org\u002Fextension\u002Fcordx56\u002Frustowl-vscode).\nRustOwl will be installed automatically when the extension is activated.\n\nAfter installation, the extension will automatically run RustOwl when you save any Rust program in cargo workspace.\nThe initial analysis may take some time, but from the second run onward, compile caching is used to reduce the analysis time.\n\nSame as [VS Code](#vs-code), see the [VS Code Configuration Guide](docs\u002Fvscode-configuration.md) for more detailed configuration options.\n\n## Other editor support\n\nWe support Neovim and Emacs.\nYou have to [install RustOwl](.\u002Fdocs\u002Finstallation.md) before using RustOwl with other editors.\n\nYou can also create your own LSP client.\nIf you would like to implement a client, please refer to the [The RustOwl LSP specification](docs\u002Flsp-spec.md).\n\n### Neovim\n\nMinimal setup with [lazy.nvim](https:\u002F\u002Fgithub.com\u002Ffolke\u002Flazy.nvim):\n\n```lua\n{\n  'cordx56\u002Frustowl',\n  version = '*', -- Latest stable version\n  build = 'cargo install rustowl',\n  lazy = false, -- This plugin is already lazy\n  opts = {},\n}\n```\n\nFor comprehensive configuration options including custom highlight colors, see the [Neovim Configuration Guide](docs\u002Fneovim-configuration.md).\n\n### Emacs\n\nElpaca example:\n\n```elisp\n(elpaca\n  (rustowl\n    :host github\n    :repo \"cordx56\u002Frustowl\"))\n```\n\nThen use-package:\n\n```elisp\n(use-package rustowl\n  :after lsp-mode)\n```\n\nYou have to install RustOwl LSP server manually.\n\nFor more detailed configuration options, see the [Emacs Configuration Guide](.\u002Fdocs\u002Femacs-configuration.md).\n\n### RustRover \u002F IntelliJ IDEs\n\nThere is a [third-party repository](https:\u002F\u002Fgithub.com\u002Fsiketyan\u002Fintellij-rustowl) that supports IntelliJ IDEs.\nYou have to install RustOwl LSP server manually.\n\n### Sublime Text\n\nThere is a [third-party repository](https:\u002F\u002Fgithub.com\u002FCREAsTIVE\u002FLSP-rustowl) that supports Sublime Text.\n\n## Installation\n\nPlease see [Installation](docs\u002Finstallation.md) for detailed installation instructions.\n\n## Usage\n\nPlease see [Usage](docs\u002Fusage.md) for detailed usage instructions.\n\n## Note\n\nWe support the 5 latest versions of Rust (best effort).\n\nIn this tool, due to the limitations of VS Code's decoration specifications, characters with descenders, such as g or parentheses, may occasionally not display underlines properly.\nAdditionally, we observed that the `println!` macro sometimes produces extra output, though this does not affect usability in any significant way.\n","RustOwl 是一个用于可视化 Rust 代码中所有权和生命周期的工具，帮助开发者进行调试和优化。它通过不同颜色的下划线来表示变量的实际生命周期、不可变借用、可变借用、值移动或函数调用以及生命周期错误，使开发者能够直观地理解代码中的所有权和生命周期行为。该工具支持 VSCode、Neovim 和 Emacs 等多种编辑器，并提供在线试用版本。RustOwl 特别适合于需要深入理解和调试 Rust 代码所有权及生命周期机制的场景，如复杂系统开发、性能优化等。",2,"2026-06-11 03:04:52","top_language"]