Skip to content

Commit cfcf8dc

Browse files
committed
---
yaml --- r: 232268 b: refs/heads/try c: 78d2833 h: refs/heads/master v: v3
1 parent 8d27129 commit cfcf8dc

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: edeb4f1c86cbf6af8ef9874d4b3af50f721ea1b8
33
refs/heads/snap-stage3: 1af31d4974e33027a68126fa5a5a3c2c6491824f
4-
refs/heads/try: d83a0fdf7da8b93b21de6ff2809e81a69447a9a5
4+
refs/heads/try: 78d28336feb9f46ac5929023f45acdbb3f3379e5
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/src/librustc_borrowck/diagnostics.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,28 @@ The problem here is that foo is defined as accepting a parameter of type `Fn`.
125125
Closures passed into foo will thus be inferred to be of type `Fn`, meaning that
126126
they capture their context immutably.
127127
128-
The solution is to capture the data mutably. This can be done by defining `foo`
129-
to take FnMut rather than Fn:
128+
If the definition of `foo` is under your control, the simplest solution is to
129+
capture the data mutably. This can be done by defining `foo` to take FnMut
130+
rather than Fn:
130131
131132
```
132133
fn foo<F: FnMut()>(f: F) { }
133134
```
135+
136+
Alternatively, we can consider using the `Cell` and `RefCell` types to achieve
137+
interior mutability through a shared reference. Our example's `mutable` function
138+
could be redefined as below:
139+
140+
```
141+
fn mutable() {
142+
let x = std::cell::Cell::new(0u32);
143+
foo(|| x.set(2));
144+
}
145+
```
146+
147+
You can read more about cell types in the API documentation:
148+
149+
https://doc.rust-lang.org/std/cell/
134150
"##
135151

136152
}

0 commit comments

Comments
 (0)