blob: 9368f6f56a8f76ad6daa7c5960628ba215074a50 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
+ Some kind of "unreachable" might be nice to help the move checker? for
instance,
if abc {
release(var);
fwdpanic("!!!");
}
use(var)
might be nicer to write than
if abc {
release(var);
fwdpanic("!!!");
} else {
use(var);
}
or the current alternative
guard(abc) => {
release(var);
fwdpanic("!!!");
} => ;
use (var);
+ Hmm, some kind of way to say 'this thing owns this reference' would be good.
At the moment, I'm thinking something that parameter lists can be extended with
ownership rules, so for example
at_vec(vec v, u64 i, (vec > &i64) ok)
would return a 'new' vector and a reference into the vector. If the 'vec' is
moved, the &i64 is marked invalidated, but the &i64 is allowed to be passed
around as long as 'vec' is not moved.
For more references, something like
hmm((owner > thing1 | thing2))
is three parameters, thing1 and thing2 are both
invalidated if owner is moved (getting two indexes from a vector to swap them?
not sure). Not sure how complex this system should be, could there for example
be a situation where
hmm((owner > thing1 > thing2))
might make sense? For now, the parser only accepts the first form, (vec > &i64).
|