Skip to content

Commit 3e6fc88

Browse files
authored
guide: update supported features table (#2443)
1 parent e3fc060 commit 3e6fc88

2 files changed

Lines changed: 27 additions & 18 deletions

File tree

source/docs/guide/src/features.md

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Quick reference for supported Rust features. Note that this list does not includ
44

55
Note that Verus is in active development. If a feature is unsupported, it might be genuinely hard, or it might just be low priority. See the [github issues](https://github.com/verus-lang/verus/issues) or [discussions](https://github.com/verus-lang/verus/discussions) for information on planned features.
66

7-
**Last Updated: 2026-02-18**
7+
**Last Updated: 2026-05-13**
88

99
<div class="table-wrapper"><table>
1010
<thead><tr><th colspan="2"><strong>Items</strong></th></tr></thead>
@@ -96,8 +96,8 @@ Note that Verus is in active development. If a feature is unsupported, it might
9696
<td>Supported</td>
9797
</tr>
9898
<tr>
99-
<td>Items</td>
100-
<td>Not supported</td>
99+
<td>Nested items</td>
100+
<td>Partially supported</td>
101101
</tr>
102102
<tr>
103103
<td><code>loop</code>, <code>while</code></td>
@@ -124,12 +124,20 @@ Note that Verus is in active development. If a feature is unsupported, it might
124124
<td>Supported</td>
125125
</tr>
126126
<tr>
127-
<td><code>&</code></td>
127+
<td>Shared borrows (<code>&</code>)</td>
128128
<td>Supported</td>
129129
</tr>
130130
<tr>
131-
<td><code>&mut</code>, place expressions</td>
132-
<td>Partially supported</td>
131+
<td>Mutable borrows (<code>&mut</code>)</td>
132+
<td>Supported</td>
133+
</tr>
134+
<tr>
135+
<td>Place expressions</td>
136+
<td>Supported</td>
137+
</tr>
138+
<tr>
139+
<td><a href="https://doc.rust-lang.org/reference/expressions/operator-expr.html?highlight=assignment#destructuring-assignments">Destructuring assignment</a></td>
140+
<td>Not supported</td>
133141
</tr>
134142
<tr>
135143
<td><code>==</code>, <code>!=</code></td>
@@ -183,6 +191,10 @@ Note that Verus is in active development. If a feature is unsupported, it might
183191
<td>Return statements</td>
184192
<td>Supported</td>
185193
</tr>
194+
<tr>
195+
<td>Implicit coercions, derefences, and borrows</td>
196+
<td>Supported</td>
197+
</tr>
186198
</tbody>
187199
<thead><tr><th colspan="2"><strong>Integer arithmetic</strong></th></tr></thead>
188200
<tbody>
@@ -242,12 +254,12 @@ Note that Verus is in active development. If a feature is unsupported, it might
242254
<td>Partially supported</td>
243255
</tr>
244256
<tr>
245-
<td>References (<code>&</code>)</td>
257+
<td>Shared references (<code>&T</code>)</td>
246258
<td>Supported</td>
247259
</tr>
248260
<tr>
249-
<td>Mutable references (<code>&mut</code>)</td>
250-
<td>Partially supported</td>
261+
<td>Mutable references (<code>&mut T</code>)</td>
262+
<td>Supported</td>
251263
</tr>
252264
<tr>
253265
<td>Never type</td>
@@ -259,7 +271,7 @@ Note that Verus is in active development. If a feature is unsupported, it might
259271
</tr>
260272
<tr>
261273
<td>Closure types</td>
262-
<td>Supported</td>
274+
<td>Partially Supported (no mutable captures)</td>
263275
</tr>
264276
<tr>
265277
<td>Trait objects (dyn)</td>
@@ -271,7 +283,7 @@ Note that Verus is in active development. If a feature is unsupported, it might
271283
</tr>
272284
<tr>
273285
<td>Cell, RefCell</td>
274-
<td>Not supported (see <a href="https://verus-lang.github.io/verus/verusdoc/vstd/cell/index.html">vstd alternatives</a>)</td>
286+
<td><a href="https://verus-lang.github.io/verus/verusdoc/vstd/cell/index.html">vstd alternatives</a></td>
275287
</tr>
276288
<tr>
277289
<td>Iterators</td>
@@ -358,7 +370,7 @@ Note that Verus is in active development. If a feature is unsupported, it might
358370
</tr>
359371
<tr>
360372
<td><code>DerefMut</code></td>
361-
<td>Not supported</td>
373+
<td>Supported</td>
362374
</tr>
363375
</tbody>
364376
<thead><tr><th colspan="2"><strong>Multi-threading</strong></th></tr></thead>
@@ -373,7 +385,7 @@ Note that Verus is in active development. If a feature is unsupported, it might
373385
</tr>
374386
<tr>
375387
<td>Atomics</td>
376-
<td>Supported (<a href="https://verus-lang.github.io/verus/verusdoc/vstd/atomic_ghost/index.html">vstd equivalent</a>)</td>
388+
<td><a href="https://verus-lang.github.io/verus/verusdoc/vstd/atomic_ghost/index.html">vstd alternatives</a></td>
377389
</tr>
378390
<tr>
379391
<td>spawn and join</td>
@@ -400,7 +412,7 @@ Note that Verus is in active development. If a feature is unsupported, it might
400412
</tr>
401413
<tr>
402414
<td><code>UnsafeCell</code></td>
403-
<td>Supported (<a href="https://verus-lang.github.io/verus/verusdoc/vstd/cell/struct.PCell.html">vstd equivalent</a>)</td>
415+
<td><a href="https://verus-lang.github.io/verus/verusdoc/vstd/cell/struct.PCell.html">vstd alternative</a></td>
404416
</tr>
405417
</tbody>
406418
<thead><tr><th colspan="2"><strong>Crates and code organization</strong></th></tr></thead>

source/docs/guide/src/verus_macro_intro.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ Specifically, the `verus!` macro extends Rust's syntax with verification-related
1313
such as preconditions, postconditions, assertions, `forall`, `exists`, etc.,
1414
which we will learn more about in this tutorial.
1515

16-
17-
Verus uses a macro named `verus!` to extend Rust's syntax with verification-related features
18-
such as preconditions, postconditions, assertions, `forall`, `exists`, etc.
19-
Therefore, each file in a crate will typically take the following form:
16+
Each file in a crate will typically take the following form:
2017

2118
```rust
2219
use vstd::prelude::*;

0 commit comments

Comments
 (0)