├── .gitignore ├── favicon.ico ├── sprinkles.png ├── README.md ├── script.js ├── style.css ├── table.jade └── index.jade /.gitignore: -------------------------------------------------------------------------------- 1 | index.html 2 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contradictioned/areweideyet/HEAD/favicon.ico -------------------------------------------------------------------------------- /sprinkles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/contradictioned/areweideyet/HEAD/sprinkles.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | areweideyet 2 | =========== 3 | 4 | This aims to be an overview over the ecosystem of editors 5 | and IDEs for Rust coding. 6 | 7 | 8 | How 2 contribute? 9 | ----------------- 10 | 11 | Open an issue in the issue tracker, 12 | write me in IRC (same nickname), 13 | or fork the repository, edit and compile `index.jade` to check if it works, and send a pull request. 14 | 15 | 16 | Licence 17 | ------- 18 | 19 | I've chosen the CC-by licence, as it seemed to be the most permissive and appropriate one. 20 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | function init() { 2 | table_body = document.getElementById("overview").getElementsByTagName("tbody")[0]; 3 | 4 | // we collect all rows of the "more"-editors in these variables 5 | editor_more_rows = []; 6 | ide_more_rows = []; 7 | 8 | // and store the "show more"-rows 9 | editor_show_more = undefined; 10 | ide_show_more = undefined; 11 | 12 | var rows = table_body.getElementsByTagName("tr"); 13 | var editors = 0; // 0 if current row is an editor row, 1 if ide row 14 | for(var i = 0; i < rows.length; i++) { 15 | var cl = rows[i].classList; 16 | // search for .show_mode rows 17 | if(cl.contains("show_more")) { 18 | if(editors == 0) { 19 | editor_show_more = rows[i]; 20 | } else if(editors == 1) { 21 | ide_show_more = rows[i]; 22 | } else { 23 | console.log("Something strange happened: I found a third .show_more element."); 24 | } 25 | } 26 | 27 | // search for .more rows 28 | if(cl.contains("more")) { 29 | if(editors == 0) { 30 | editor_more_rows.push(rows[i]); 31 | } else if(editors == 1) { 32 | ide_more_rows.push(rows[i]); 33 | } else { 34 | console.log("Something strange happened: I found a third kind of .more elements."); 35 | } 36 | } 37 | 38 | // if we hit the separator, we change from editors to ides 39 | if(cl.contains("separator")) { 40 | editors = 1; 41 | } 42 | } 43 | } 44 | 45 | 46 | /* More rows */ 47 | function hide_more_editor_rows() { 48 | for(var i in editor_more_rows) { 49 | editor_more_rows[i].classList.add('hidden'); 50 | } 51 | } 52 | function hide_more_ide_rows() { 53 | for(var i in ide_more_rows) { 54 | ide_more_rows[i].classList.add('hidden'); 55 | } 56 | } 57 | function show_more_editor_rows() { 58 | for(var i in editor_more_rows) { 59 | editor_more_rows[i].classList.remove('hidden'); 60 | } 61 | } 62 | function show_more_ide_rows() { 63 | for(var i in ide_more_rows) { 64 | ide_more_rows[i].classList.remove('hidden'); 65 | } 66 | } 67 | 68 | /* Labels */ 69 | function hide_more_editor_label() { 70 | editor_show_more.classList.add('hidden'); 71 | } 72 | function hide_more_ide_label() { 73 | ide_show_more.classList.add('hidden'); 74 | } 75 | function show_more_editor_label() { 76 | editor_show_more.classList.remove('hidden'); 77 | } 78 | function show_more_ide_label() { 79 | ide_show_more.classList.remove('hidden'); 80 | } 81 | 82 | 83 | document.addEventListener("DOMContentLoaded", function(event) { 84 | init(); 85 | 86 | show_more_editor_label(); 87 | show_more_ide_label(); 88 | hide_more_editor_rows(); 89 | hide_more_ide_rows(); 90 | 91 | editor_show_more.onclick = function() { 92 | show_more_editor_rows(); 93 | hide_more_editor_label(); 94 | }; 95 | ide_show_more.onclick = function() { 96 | show_more_ide_rows(); 97 | hide_more_ide_label(); 98 | } 99 | }); 100 | 101 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Helvetica, Arial, sans-serif; 3 | font-size: 16px; 4 | color: #333; 5 | background: url(sprinkles.png); 6 | background-color: #F2ECD5; 7 | } 8 | 9 | .container { 10 | width: 900px; 11 | margin-left: auto; 12 | margin-right: auto; 13 | padding: 2em; 14 | background-color: white; 15 | } 16 | 17 | header { 18 | border: 1px solid #EEE; 19 | border-radius: 5px; 20 | background: #F2ECD5; 21 | padding: 2em; 22 | font-size: 20px; 23 | } 24 | 25 | .beta { 26 | color: red; 27 | } 28 | 29 | h1 { 30 | font-style: italic; 31 | text-align: right; 32 | } 33 | h2 { 34 | font-size: 20px; 35 | } 36 | 37 | section { 38 | border-bottom: 2px solid #EEE; 39 | } 40 | 41 | section > ul { 42 | padding: 0; 43 | } 44 | 45 | section > ul > li { 46 | list-style-type: none; 47 | border: 1px solid #EEE; 48 | margin: 0 0 2em 0; 49 | padding: 1em 1em 0em 1em; 50 | } 51 | 52 | h2 { 53 | margin: 0px 0px 5px 0px; 54 | } 55 | 56 | p { 57 | margin-top: .3em; 58 | margin-bottom: .3em; 59 | } 60 | 61 | 62 | ul.features { 63 | padding-left:1em; 64 | } 65 | ul.features > li { 66 | list-style-type: none 67 | } 68 | ul.features > li:before { 69 | padding-right: .4em; 70 | content: '\2611'; 71 | color: #428bca; 72 | } 73 | 74 | /* Footer */ 75 | footer { 76 | margin-top:3em; 77 | } 78 | footer > ul { 79 | display: flex; 80 | } 81 | footer > ul > li { 82 | list-style-type: none; 83 | min-width: 0; 84 | flex-grow: 1; 85 | } 86 | #legal p { 87 | color: #888; 88 | } 89 | 90 | 91 | /* Links */ 92 | a:link { 93 | color: #f60; 94 | text-decoration: none; 95 | } 96 | a:visited { 97 | color: #f90; 98 | } 99 | a:hover { 100 | color: #f60; 101 | text-decoration: underline; 102 | } 103 | a:focus { 104 | color: #f60; 105 | text-decoration: underline; 106 | } 107 | a:active { 108 | color: #f60; 109 | } 110 | 111 | /* Headline links */ 112 | h2 a:link { 113 | color: #333; 114 | text-decoration: none; 115 | } 116 | h2 a:visited { 117 | color: #333; 118 | } 119 | h2 a:hover { 120 | color: #f60; 121 | text-decoration: underline; 122 | } 123 | h2 a:focus { 124 | color: #f60; 125 | text-decoration: underline; 126 | } 127 | h2 a:active { 128 | color: #f60; 129 | } 130 | 131 | 132 | /****************** 133 | * OVERVIEW TABLE * 134 | *****************/ 135 | 136 | /* borders */ 137 | table#overview { 138 | border-collapse: collapse; 139 | margin-left: auto; 140 | margin-right: auto; 141 | } 142 | table#overview td { 143 | border: 1px solid #CCC; 144 | } 145 | table#overview tbody tr { 146 | border-top: 1px solid #CCC; 147 | border-bottom: 1px solid #CCC; 148 | } 149 | table#overview tbody tr.separator { 150 | border-top: 2px solid #CCC; 151 | } 152 | 153 | /* headers */ 154 | table#overview thead tr th { 155 | height: 130px; 156 | white-space: nowrap; 157 | vertical-align: bottom; 158 | padding-bottom: 1em; 159 | } 160 | table#overview thead tr th div { 161 | transform: rotate(-45deg); 162 | width: 30px; 163 | } 164 | 165 | /* general style */ 166 | table#overview td, table#overview th { 167 | padding: .3em .6em; 168 | } 169 | 170 | div#overviewlegend { 171 | margin-left: auto; 172 | margin-right: auto; 173 | text-align: center; 174 | } 175 | 176 | p.packages { 177 | line-height: 22px; 178 | } 179 | 180 | p.packages a { 181 | padding: 4px; 182 | margin: 2px; 183 | background-color: #f9f9f9; 184 | border-radius: 5px; 185 | } 186 | 187 | p.last-update { 188 | text-align: right; 189 | color: #CCC; 190 | font-size: 12px; 191 | } 192 | 193 | /* Show more row */ 194 | table#overview tr.show_more { 195 | text-align: center; 196 | background-color: #CCC; 197 | line-height: 12px; 198 | font-size: 12px; 199 | font-weight: bold; 200 | color:#777; 201 | padding: 1px; 202 | /* display: none; */ 203 | } 204 | table#overview .hidden { 205 | display: none; 206 | } 207 | 208 | /* This is initially hidden */ 209 | table#overview tr.shown { 210 | display: table-row !important; 211 | } 212 | 213 | table#overview tbody tr:hover:not(.show_more) { 214 | background-color: #F2ECD5; 215 | } -------------------------------------------------------------------------------- /table.jade: -------------------------------------------------------------------------------- 1 | table#overview 2 | thead 3 | tr 4 | th 5 | th 6 | div Syntax highlighting (.rs) 7 | th 8 | div Syntax highlighting (.toml) 9 | th 10 | div Snippets 11 | th 12 | div Code Completion 13 | th 14 | div Linting 15 | th 16 | div Code Formatting 17 | th 18 | div Go-to Definition 19 | th 20 | div Debugging 21 | th 22 | div Documentation Tooltips 23 | tbody 24 | tr 25 | th.name 26 | a(href="#atom") Atom 27 | td.highlighting ✓ 28 | td.tomlhighlighting ✓ 29 | td.snippets ✓1 30 | td.completion ✓1 31 | td.linting ✓1 32 | td.formatting ✓1 33 | td.goto ✓1 34 | td.debugging 35 | td.doctooltips ✓1 36 | tr 37 | th.name 38 | a(href="#emacs") Emacs 39 | td.highlighting ✓1 40 | td.tomlhighlighting ✓ 41 | td.snippets ✓1 42 | td.completion ✓1 43 | td.linting ✓1 44 | td.formatting ✓1 45 | td.goto ✓1 46 | td.debugging 47 | td.doctooltips ✓1 48 | tr 49 | th(title="Sublime Text 2/3").name 50 | a(href="#sublime") Sublime 51 | td.highlighting ✓ 52 | td.tomlhighlighting ✓1 53 | td.snippets ✓ 54 | td.completion ✓1 55 | td.linting ✓ 56 | td.formatting ✓1 57 | td.goto ✓1 58 | td.debugging 59 | td.doctooltips 60 | tr 61 | th.name 62 | a(href="#vim") Vim/Neovim 63 | td.highlighting ✓ 64 | td.tomlhighlighting ✓1 65 | td.snippets ✓1 66 | td.completion ✓1 67 | td.linting ✓1 68 | td.formatting ✓1 69 | td.goto ✓1 70 | td.debugging 71 | td.doctooltips ✓1 72 | tr 73 | th.name 74 | a(href="#vscode") VS Code 75 | td.highlighting ✓ 76 | td.tomlhighlighting ✓1 77 | td.snippets ✓ 78 | td.completion ✓1 79 | td.linting ✓1 80 | td.formatting ✓1 81 | td.goto ✓1 82 | td.debugging ✓1 83 | td.doctooltips ✓1 84 | //-------- 85 | //- More - 86 | //-------- 87 | tr.show_more 88 | td(colspan="9") Show more editors ⇩ 89 | tr.more 90 | th.name 91 | a(href="#bbedit") BBedit 92 | td.highlighting ✓1 93 | td.tomlhighlighting ✓1 94 | td.snippets ✓1 95 | td.completion 96 | td.linting 97 | td.formatting ✓1 98 | td.goto (✓1) 99 | td.debugging 100 | td.doctooltips 101 | tr.more 102 | th.name 103 | a(href="#geany") Geany 104 | td.highlighting ✓ 105 | td.tomlhighlighting 106 | td.snippets 107 | td.completion 108 | td.linting 109 | td.formatting 110 | td.goto 111 | td.debugging 112 | td.doctooltips 113 | tr.more 114 | th.name 115 | a(href="#gedit") gedit 116 | td.highlighting ✓1 117 | td.tomlhighlighting 118 | td.snippets 119 | td.completion ✓1 120 | td.linting 121 | td.formatting 122 | td.goto ✓1 123 | td.debugging 124 | td.doctooltips 125 | tr.more 126 | th.name 127 | a(href="#kakoune") Kakoune 128 | td.highlighting ✓ 129 | td.tomlhighlighting ✓ 130 | td.snippets ✓1 131 | td.completion ✓1 132 | td.linting ✓1 133 | td.formatting ✓1 134 | td.goto ✓1 135 | td.debugging 136 | td.doctooltips ✓1 137 | tr.more 138 | th.name 139 | a(href="#kate") Kate 140 | td.highlighting ✓ 141 | td.tomlhighlighting ✓ 142 | td.snippets 143 | td.completion ✓1 144 | td.linting ✓1 145 | td.formatting ✓1 146 | td.goto ✓1 147 | td.debugging 148 | td.doctooltips 149 | tr.more 150 | th.name 151 | a(href="#micro") Micro 152 | td.highlighting ✓ 153 | td.tomlhighlighting ✓ 154 | td.snippets 155 | td.completion 156 | td.linting ✓1 157 | td.formatting ✓1 158 | td.goto 159 | td.debugging 160 | td.doctooltips 161 | tr.more 162 | th.name 163 | a(href="#mc") Midnight Commander 164 | td.highlighting ✓1 165 | td.tomlhighlighting 166 | td.snippets 167 | td.completion 168 | td.linting 169 | td.formatting 170 | td.goto 171 | td.debugging 172 | td.doctooltips 173 | tr.more 174 | th.name 175 | a(href="#textadept") Textadept 176 | td.highlighting ✓ 177 | td.tomlhighlighting ✓ 178 | td.snippets ✓1 179 | td.completion ✓1 180 | td.linting ✓1 181 | td.formatting 182 | td.goto ✓1 183 | td.debugging 184 | td.doctooltips 185 | //-------- 186 | //- IDEs - 187 | //-------- 188 | tr.separator 189 | th.name 190 | a(href="#eclipse") Eclipse 191 | td.highlighting ✓1 192 | td.tomlhighlighting 193 | td.snippets ✓1 194 | td.completion ✓1 195 | td.linting ✓1 196 | td.formatting ✓1 197 | td.goto ✓1 198 | td.debugging ✓1 199 | td.doctooltips ✓1 200 | tr 201 | th.name 202 | a(href="#intellij") IntelliJ-based IDEs 203 | td.highlighting ✓1 204 | td.tomlhighlighting ✓1 205 | td.snippets ✓1 206 | td.completion ✓1 207 | td.linting ✓1 208 | td.formatting ✓1 209 | td.goto ✓1 210 | td.debugging ✓1 211 | td.doctooltips ✓1 212 | tr 213 | th.name 214 | a(href="#visualstudio") Visual Studio 215 | td.highlighting ✓ 216 | td.tomlhighlighting 217 | td.snippets 218 | td.completion ✓1 219 | td.linting 220 | td.formatting 221 | td.goto ✓1 222 | td.debugging ✓1 223 | td.doctooltips 224 | tr 225 | th.name 226 | a(href="#gnome-builder") GNOME Builder 227 | td.highlighting ✓ 228 | td.tomlhighlighting 229 | td.snippets ✓ 230 | td.completion ✓ 231 | td.linting ✓ 232 | td.formatting ✓1 233 | td.goto ✓ 234 | td.debugging 235 | td.doctooltips 236 | tr.show_more 237 | td(colspan="9") Show more IDEs ⇩ 238 | //-------- 239 | //- More - 240 | //-------- 241 | tr.more 242 | th.name 243 | a(href="#ride") Ride 244 | td.highlighting ✓ 245 | td.tomlhighlighting 246 | td.snippets 247 | td.completion 248 | td.linting 249 | td.formatting 250 | td.goto 251 | td.debugging 252 | td.doctooltips 253 | #overviewlegend 254 | p 255 | | ✓ = supported out-of-the-box, 256 | | ✓1 = supported via plugin 257 | -------------------------------------------------------------------------------- /index.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html(lang="en") 3 | head 4 | title Are we (I)DE yet? 5 | link(rel="stylesheet" href="style.css") 6 | script(src="script.js") 7 | meta(charset="utf-8") 8 | body 9 | .container 10 | header 11 | h1 Are we (I)DE yet? 12 | p 13 | | An overview about the state of 14 | a(href="https://www.rust-lang.org/") Rust 15 | | support by text editors and their integrated brethren. 16 | p Below you'll find a table listing the comparable features of editors, 17 | | followed by specific information about single programs. 18 | | The last part presents some more tooling of Rust's ecosystem. 19 | 20 | section 21 | include table.jade 22 | 23 | h1 Text Editors 24 | 25 | ul 26 | li 27 | a(name="atom") 28 | h2 Atom 29 | p.packages 30 | | Important packages: 31 | a(href="https://atom.io/packages/ide-rust") ide-rust 32 | | automatically prompts to install the nightly toolchain and then 33 | | sets up everything else that's needed for code completion, API 34 | | documentation lookup and so on. 35 | a(href="https://atom.io/packages/build-cargo") build-cargo 36 | | (relying on 37 | a(href="https://github.com/noseglid/atom-build") atom-build 38 | | ) 39 | p.last-update(title="Last update") 2019-06-29 40 | 41 | li 42 | a(name="bbedit") 43 | h2 BBEdit 44 | p.packages 45 | | Important packages: 46 | a(href="https://github.com/ogham/Rust-BBEdit") Rust-BBEdit 47 | p.last-update(title="Last update") 2019-07-15 48 | 49 | li 50 | a(name="brackets") 51 | h2 Brackets 52 | p.packages 53 | | Important packages: 54 | a(href="https://github.com/rrandom/Brackets-Rust-IDE") Rust-IDE 55 | p.last-update(title="Last update") 2016-01-12 56 | 57 | li 58 | a(name="emacs") 59 | h2 Emacs 60 | p.packages 61 | | Important packages: 62 | a(href="https://github.com/rust-lang/rust-mode") rust-mode 63 | | , 64 | a(href="https://github.com/flycheck/flycheck-rust") flycheck-rust 65 | | , 66 | a(href="https://github.com/racer-rust/emacs-racer") emacs-racer 67 | | , 68 | a(href="https://github.com/emacs-lsp/lsp-mode") lsp-mode 69 | | , 70 | a(href="https://github.com/freebroccolo/rust-snippets") rust-snippets 71 | | , 72 | a(href="https://github.com/brotzeit/rustic") rustic 73 | p.last-update(title="Last update") 2019-07-17 74 | 75 | li 76 | a(name="micro") 77 | h2 Micro 78 | p.specific 79 | a(href="https://micro-editor.github.io/") Micro 80 | | is a modern and intuitive terminal-based text editor. 81 | p.packages 82 | | Important packages: 83 | a(href="https://github.com/tommyshem/micro-rust-plugin") micro-rust-plugin 84 | p.last-update(title="Last update") 2020-08-20 85 | 86 | li 87 | a(name="mc") 88 | h2 Midnight Commander 89 | p.packages 90 | | Important packages: 91 | a(href="https://github.com/chabapok/mc-rust-lang") mc-rust-lang 92 | p.last-update(title="Last update") 2017-08-25 93 | 94 | li 95 | a(name="geany") 96 | h2 Geany 97 | p.specific 98 | | Specific highlights: 99 | | Geany is one of the few editors with syntax highlighting out-of-the-box (since 1.24). 100 | | It has built in scripts to run rustc, and even cargo support is coming soon™. 101 | p.last-update(title="Last update") 2015-08-16 102 | 103 | li 104 | a(name="gedit") 105 | h2 Gedit 106 | p.packages 107 | | Important packages: 108 | a(href="https://github.com/chronologicaldot/GEdit-Rust-lang") GEdit-Rust-lang (syntax highlighting) 109 | | , 110 | a(href="https://github.com/rust-lang/gedit-config") gedit-config (also syntax highlighting) 111 | | , 112 | a(href="https://github.com/isamert/gracer") gracer 113 | p.last-update(title="Last update") 2016-10-09 114 | 115 | li 116 | a(name="kate") 117 | h2 Kate 118 | p.specific 119 | | Specific highlights: 120 | | Kate provides Rust and .toml syntax highlighting out of the box. 121 | | Plus, there is also support for rls and through that autocompletion, 122 | | linting, code formatting and go-to definition. 123 | | Activate it with: 124 | | Settings > Configure Kate > Plugins > LSP Client. 125 | p.last-update(title="Last update") 2020-05-08 126 | 127 | li 128 | a(name="textadept") 129 | h2 Textadept 130 | p.packages 131 | | Important packages: 132 | a(href="https://bitbucket.org/a_baez/ta-rust/src") ta-rust 133 | | (unfortunately out of date), 134 | a(href="https://bitbucket.org/a_baez/ta-toml") ta-toml 135 | p.specific 136 | | Specific highlights: 137 | | Textadept is one of the few editors with syntax highlighting out-of-the-box (since 8.0). 138 | | The module has built in scripts to run rustc with simple syntax checking and cargo support. 139 | p.last-update(title="Last update") 2018-08-31 140 | 141 | li 142 | a(name="sublime") 143 | h2 Sublime Text 2/3 144 | p.specific 145 | | Sublime supports Rust out-of-the-box with syntax highlighting, snippets, build scripts, 146 | | and its new 147 | a(href="https://www.sublimetext.com/blog/articles/sublime-text-3-build-3124") definition system. 148 | p.packages 149 | | Important packages: 150 | a(href="https://packagecontrol.io/packages/TOML") TOML 151 | | , 152 | a(href="https://packagecontrol.io/packages/Rust%20Enhanced") Rust Enhanced 153 | | , 154 | a(href="https://packagecontrol.io/packages/YcmdCompletion") YouCompleteMe plugin 155 | | , 156 | a(href="https://packagecontrol.io/packages/BeautifyRust") BeautifyRust 157 | p.last-update(title="Last update") 2018-08-31 158 | 159 | li 160 | a(name="vim") 161 | h2 Vim and Neovim 162 | p.packages 163 | | Important packages: 164 | ul 165 | li 166 | a(href="https://github.com/rust-lang/rust.vim") rust.vim 167 | li 168 | a(href="https://github.com/neoclide/coc-rls/") coc-rls 169 | | (relying on 170 | a(href="https://github.com/neoclide/coc.nvim") Coc 171 | | ) 172 | li 173 | a(href="http://blog.jwilm.io/youcompleteme-rust") YouCompleteMe-rust 174 | li 175 | a(href="https://github.com/racer-rust/vim-racer") vim-racer 176 | li 177 | a(href="https://github.com/scrooloose/syntastic") syntastic 178 | li 179 | a(href="https://github.com/honza/vim-snippets") vim-snippets 180 | | (relying on 181 | a(href="https://github.com/sirver/ultisnips") UltiSnips 182 | | ) 183 | li 184 | a(href="https://github.com/ncm2/ncm2-racer") ncm2-racer 185 | | (relying on 186 | a(href="https://github.com/ncm2/ncm2") ncm2 187 | | ) 188 | p.packages 189 | | Important Neovim-only packages: 190 | ul 191 | li 192 | a(href="https://github.com/dbgx/lldb.nvim") lldb.nvim 193 | | ( 194 | a(href="https://github.com/dbgx/lldb.nvim/commit/56dfc2d945") unmaintained 195 | | as of 2018-03-11) 196 | li 197 | a(href="https://github.com/roxma/nvim-cm-racer") nvim-cm-racer 198 | | (relying on 199 | a(href="https://github.com/roxma/nvim-completion-manager") nvim-completion-manager 200 | | , which is 201 | a(href="https://github.com/roxma/nvim-completion-manager/issues/12#issuecomment-382334422") unmaintained 202 | | as of 2018-04-18) 203 | p.last-update(title="Last update") 2019-07-15 204 | li 205 | a(name="vscode") 206 | h2 VS Code 207 | p.packages 208 | | Important packages: 209 | 210 | a(href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust") Rust 211 | | , 212 | a(href="https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb") CodeLLDB 213 | | , 214 | a(href="https://marketplace.visualstudio.com/items?itemName=webfreak.debug") Debug 215 | | , 216 | a(href="https://marketplace.visualstudio.com/items?itemName=hdevalke.rust-test-lens") Rust Test Lens 217 | | , 218 | a(href="https://marketplace.visualstudio.com/items?itemName=be5invis.toml") TOML Language Support 219 | | or 220 | a(href="https://marketplace.visualstudio.com/items?itemName=bungcip.better-toml") Better Toml 221 | | , 222 | a(href="https://marketplace.visualstudio.com/items?itemName=serayuzgur.crates") crates 223 | p.last-update(tilte="Last update") 2019-07-15 224 | 225 | 226 | 227 | section 228 | h1 Integrated Development Environments 229 | 230 | ul 231 | li 232 | a(name="eclipse") 233 | h2 Eclipse 234 | p.packages 235 | a(href="https://github.com/eclipse/corrosion") Corrosion 236 | | is a 237 | a(href="https://www.eclipse.org/downloads/packages/") Rust-specific IDE 238 | | built on Eclipse (scroll down to "Eclipse IDE for Rust Developers") and 239 | a(href="https://marketplace.eclipse.org/content/redox-rust-edition-eclipse-ide") an Eclipse plugin 240 | |. 241 | p.specific With Corrosion you get: 242 | ul.features 243 | li project wizard 244 | li build integration with cargo 245 | li rustup and cargo management tools 246 | li gdb debugging 247 | li go to definitions 248 | li autocomplete using Racer 249 | li autoformat using rustfmt 250 | li references and definitions 251 | li as-you-type diagnostics 252 | li rename symbol 253 | li document symbol tree 254 | p.last-update(title="Last update") 2018-31-07 255 | 256 | li 257 | a(name="visualstudio") 258 | h2 Visual Studio (Community) 259 | p.packages 260 | | Important packages: 261 | a(href="https://github.com/PistonDevelopers/VisualRust") Visual Rust 262 | 263 | p 264 | | With Visual Rust you get 265 | ul.features 266 | li project support 267 | li build scripts 268 | li autocomplete using Racer 269 | li go to definition (including code from base Rust libraries and other third party libraries) 270 | li debugger powered by MIEngine 271 | li conditional breakpoints 272 | li watch window 273 | li immediate window (for contextual REPL experience) 274 | li using both the watch and the immediate window the runtime state can be changed 275 | li ability to drag and drop to change the next code line that will be executed 276 | li call stack view and navigation 277 | p.last-update(title="Last update") 2015-09-25 278 | 279 | li 280 | a(name="intellij") 281 | h2 IntelliJ-based IDEs 282 | p.packages 283 | | Plugins: 284 | a(href="https://plugins.jetbrains.com/plugin/8182-rust") intellij-rust 285 | | and 286 | a(href="https://plugins.jetbrains.com/plugin/8195-toml") intellij-toml 287 | |. 288 | p 289 | | The plugins bring Rust and TOML support to 290 | a(href="https://www.jetbrains.com/idea/") IDEA 291 | |, 292 | a(href="https://www.jetbrains.com/clion/") CLion 293 | |, 294 | a(href="https://www.jetbrains.com/pycharm/") PyCharm 295 | |, and other JetBrains IDEs. 296 | p 297 | | Language support includes syntax highlighting, completion, 298 | | navigation, and other 299 | a(href="https://intellij-rust.github.io/features/") code insight features 300 | |. You can work with Cargo commands and run Clippy or Rustfmt without leaving the IDE. 301 | p 302 | | Debugger is available in CLion and IntelliJ IDEA Ultimate. CLion's integration also supports CPU profiling. 303 | p.last-update(title="Last update") 2020-07-29 304 | 305 | li 306 | a(name="ride") 307 | h2 RIDE 308 | p 309 | a(href="https://github.com/madeso/ride") ride 310 | | is another IDE that is exclusively built for Rust. 311 | | It is still in a very early state, and the author suggests not to use it productively. 312 | p 313 | | But if you want to take a look behind the curtains, you can do so on 314 | a(href="https://www.youtube.com/playlist?list=PLLZf3o2GDQ_hHiXd_xqL_ShzGcU44WMi3") YouTube 315 | | where he shows recordings of him programming ride. 316 | p.last-update(title="Last update") 2016-10-10 317 | 318 | li 319 | a(name="gnome-builder") 320 | h2 GNOME Builder 321 | p 322 | | With GNOME Builder you get out of the box 323 | ul.features 324 | li build integration with cargo 325 | li semantic syntax highlighter that knows about your types 326 | li autocomplete 327 | li go to definition (including code from base Rust libraries and other third party libraries) 328 | li as-you-type diagnostics 329 | li rename symbol 330 | li document symbol tree 331 | li toolchain management powered by rustup 332 | p 333 | | Rustfmt can be used 334 | a(href="https://gitlab.gnome.org/GNOME/gnome-builder/blob/master/src/plugins/beautifier/README.md") with help of beautifier. 335 | p.last-update(title="Last update") 2018-11-30 336 | 337 | section 338 | h1 Meta 339 | 340 | ul 341 | li 342 | a(name="racer") 343 | h2 Racer 344 | p 345 | a(href="https://github.com/phildawes/racer") Racer 346 | | is a code completion tool for Rust that is developed standalone. 347 | | It is the basis for code completion in pretty much every setup. 348 | p.last-update(title="Last update") 2015-08-16 349 | li 350 | a(name="rustfmt") 351 | h2 rustfmt 352 | p 353 | a(href="https://github.com/rust-lang-nursery/rustfmt") rustfmt 354 | | is a code formatting tool which can easily be installed via 355 | code cargo install rustfmt 356 | p.last-update(title="Last update") 2017-02-24 357 | li 358 | a(name="rusty-tags") 359 | h2 rusty-tags 360 | p 361 | a(href="https://github.com/dan-t/rusty-tags") rusty-tags 362 | | provides tags for 363 | a(href="http://ctags.sourceforge.net/") ctags 364 | | which can be used with all editors that support it. 365 | p.last-update(title="Last update") 2017-02-24 366 | li 367 | a(name="tabnine") 368 | h2 TabNine 369 | p 370 | a(href="https://www.tabnine.com/") TabNine 371 | | uses deep learning to generate code completion suggestions. 372 | | Plugins for several editors are available. 373 | p.last-update(title="Last update") 2020-08-20 374 | footer 375 | ul 376 | li 377 | p 378 | | Background: 379 | br 380 | a(href="http://subtlepatterns.com/sprinkles/") Sprinkles 381 | li 382 | p 383 | | Inspiration: 384 | br 385 | a(href="https://www.arewewebyet.org/") Are we web yet? 386 | li 387 | p 388 | | Licensed under: 389 | br 390 | a(href="http://creativecommons.org/licenses/by/4.0/") CC-By 391 | li 392 | p 393 | | You want to contribute? 394 | br 395 | a(href="https://github.com/contradictioned/areweideyet") GitHub 396 | section#legal 397 | h1 Legal and Privacy 398 | p This is a private project I started because I like the Rust programming language and its helpful community, and I wanted to give something back. All information on this site is gathered by wonderful contributers on Github and hosted on my own server. The content of pages linked to on this site are not under my control. If you want to contribute please use Github, otherwise reach me via contact at the domain name (without www). 399 | p This server writes IP addresses into a log file which is used for internal statistics, security, and occasional debugging, and which is deleted at most after a week. Otherwise, your data is not processed in any way. 400 | --------------------------------------------------------------------------------