File tree 4 files changed +48
-0
lines changed
4 files changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ type t < T > = { f : fn ( ) -> T } ;
2
+
3
+ fn f < T > ( _x : t < T > ) { }
4
+
5
+ fn main ( ) {
6
+ let x: t < ( ) > = { f: { || ( ) } } ;
7
+ f ( x) ; //~ ERROR copying a noncopyable value
8
+ }
Original file line number Diff line number Diff line change
1
+ type boxedFn = { theFn : fn ( ) -> uint } ;
2
+
3
+ fn createClosure ( closedUint : uint ) -> boxedFn {
4
+ { theFn : fn @ ( ) -> uint { closedUint } }
5
+ }
6
+
7
+ fn main ( ) {
8
+ let aFn: boxedFn = createClosure ( 10 ) ;
9
+
10
+ let myInt: uint = aFn. theFn ( ) ;
11
+
12
+ assert myInt == 10 ;
13
+ }
Original file line number Diff line number Diff line change
1
+ fn add ( n : int ) -> fn @( int ) -> int {
2
+ fn @( m: int) -> int { m + n }
3
+ }
4
+
5
+ fn main ( )
6
+ {
7
+ assert add( 3 ) ( 4 ) == 7 ;
8
+ let add3 : fn ( int ) ->int = add ( 3 ) ;
9
+ assert add3( 4 ) == 7 ;
10
+ }
Original file line number Diff line number Diff line change
1
+ fn add ( n : int ) -> fn @( int ) -> int {
2
+ fn @( m: int) -> int { m + n }
3
+ }
4
+
5
+ fn main ( )
6
+ {
7
+ assert add( 3 ) ( 4 ) == 7 ;
8
+
9
+ let add1 : fn @( int ) ->int = add ( 1 ) ;
10
+ assert add1( 6 ) == 7 ;
11
+
12
+ let add2 : & ( fn @( int ) ->int ) = & add ( 2 ) ;
13
+ assert ( * add2) ( 5 ) == 7 ;
14
+
15
+ let add3 : fn ( int ) ->int = add ( 3 ) ;
16
+ assert add3( 4 ) == 7 ;
17
+ }
You can’t perform that action at this time.
0 commit comments