├── .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 |
--------------------------------------------------------------------------------