Skip to main content

Fun

Struct Fun 

Source
pub struct Fun { /* private fields */ }

Implementations§

Source§

impl Fun

Source

pub fn new() -> Self

Examples found in repository?
examples/hello_world.rs (line 5)
3fn main() {
4
5    let mut main = Fun::new()
6        .add_str("hello world!")
7        .println();
8
9    main.run();
10}
More examples
Hide additional examples
examples/return.rs (line 4)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/if.rs (line 4)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/loop.rs (line 4)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
examples/compiled.rs (line 4)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/foreign.rs (line 11)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
Source

pub fn return_self(&self) -> Self

Source

pub fn define(instruction: Value) -> Self

Source

pub fn add_data(&mut self, data: Value) -> Self

Examples found in repository?
examples/closure.rs (lines 8-18)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn add_fun(&mut self, fun: Self) -> Self

Examples found in repository?
examples/loop.rs (lines 5-9)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
More examples
Hide additional examples
examples/compiled.rs (line 4)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/safe_load.rs (lines 7-15)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/while.rs (lines 12-20)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
examples/example.rs (lines 14-18)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
Source

pub fn add_foreign_fun(&mut self, fun: ForeignFunction) -> Self

Examples found in repository?
examples/foreign.rs (line 13)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
Source

pub fn add_str(&mut self, s: &str) -> Self

Examples found in repository?
examples/hello_world.rs (line 6)
3fn main() {
4
5    let mut main = Fun::new()
6        .add_str("hello world!")
7        .println();
8
9    main.run();
10}
More examples
Hide additional examples
examples/return.rs (line 5)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/if.rs (line 5)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/safe_load.rs (line 6)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/while.rs (line 18)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
examples/example.rs (line 8)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
Source

pub fn add_num(&mut self, n: &str) -> Self

Examples found in repository?
examples/return.rs (line 7)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
More examples
Hide additional examples
examples/if.rs (line 7)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/compiled.rs (line 8)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/foreign.rs (line 12)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
examples/safe_load.rs (line 5)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/while.rs (line 10)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
Source

pub fn add_list(&mut self, l: &[Value]) -> Self

Examples found in repository?
examples/example.rs (lines 7-11)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
Source

pub fn add_list_from_fun(&mut self, fun: Self) -> Self

Source

pub fn add_obj(&mut self) -> Self

Source

pub fn call(&mut self, fun: Self) -> Self

Source

pub fn call_from_stack(&mut self) -> Self

Examples found in repository?
examples/loop.rs (line 8)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
More examples
Hide additional examples
examples/compiled.rs (line 8)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/foreign.rs (line 14)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
examples/safe_load.rs (line 16)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/example.rs (line 17)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
examples/closure.rs (line 23)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn call_foreign_function(&mut self) -> Self

Source

pub fn store(&mut self, name: &str) -> Self

Examples found in repository?
examples/loop.rs (line 9)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
More examples
Hide additional examples
examples/compiled.rs (line 4)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/safe_load.rs (line 9)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/while.rs (line 11)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
examples/example.rs (line 12)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
examples/closure.rs (line 10)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn get_parameter(&mut self, name: &str) -> Self

Source

pub fn store_variable(&mut self, name: &str) -> Self

Source

pub fn load(&mut self, name: &str) -> Self

Examples found in repository?
examples/loop.rs (line 7)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
More examples
Hide additional examples
examples/compiled.rs (line 8)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/safe_load.rs (line 9)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
examples/while.rs (line 14)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
examples/example.rs (line 15)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
examples/closure.rs (line 13)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn load_variable(&mut self, name: &str) -> Self

Source

pub fn disassemble(&mut self) -> Self

Source

pub fn as_value(&self) -> Value

Examples found in repository?
examples/example.rs (line 8)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
More examples
Hide additional examples
examples/closure.rs (line 15)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn run(&mut self)

Examples found in repository?
examples/hello_world.rs (line 9)
3fn main() {
4
5    let mut main = Fun::new()
6        .add_str("hello world!")
7        .println();
8
9    main.run();
10}
More examples
Hide additional examples
examples/return.rs (line 12)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/if.rs (line 12)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/loop.rs (line 14)
3fn main() {
4    let mut main = Fun::new()
5        .add_fun(
6            Fun::new()
7                .load("f")
8                .call_from_stack()
9        ).store("f")
10
11        .load("f")
12        .call_from_stack();
13
14    main.run();
15}
examples/compiled.rs (line 8)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/foreign.rs (line 16)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
Source

pub fn debug(&mut self)

Source

pub fn print(&mut self) -> Self

Examples found in repository?
examples/while.rs (line 18)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
More examples
Hide additional examples
examples/closure.rs (line 31)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn println(&mut self) -> Self

Examples found in repository?
examples/hello_world.rs (line 7)
3fn main() {
4
5    let mut main = Fun::new()
6        .add_str("hello world!")
7        .println();
8
9    main.run();
10}
More examples
Hide additional examples
examples/return.rs (line 9)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/if.rs (line 9)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
examples/compiled.rs (line 4)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
examples/foreign.rs (line 15)
3fn main() {
4
5        fn square(v: Value) -> Value {
6                println!("squared");
7                v.clone() * v.clone()
8        }
9
10
11        Fun::new()
12                .add_num("2")
13                .add_foreign_fun(square)
14                .call_from_stack()
15                .println()
16                .run()
17}
examples/safe_load.rs (line 13)
3fn main() {
4    let mut main = Fun::new()
5        .add_num("1")
6        .add_str("a")
7        .add_fun(
8            Fun::new()
9                .load("x").store("x")
10                .load("y").store("y")
11                .load("x")
12                .load("y")
13                .println()
14                .println()
15        )
16        .call_from_stack();
17
18    main.run();
19}
Source

pub fn add(&mut self) -> Self

Examples found in repository?
examples/compiled.rs (line 5)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
More examples
Hide additional examples
examples/while.rs (line 16)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
Source

pub fn mul(&mut self) -> Self

Examples found in repository?
examples/compiled.rs (line 6)
3fn main() {
4	Fun::new().add_fun(Fun::new().println()).store("println")
5		  .add_fun(Fun::new().add()).store("add")
6                  .add_fun(Fun::new().mul()).store("mul")
7
8.add_num("2").add_num("2").load("add").call_from_stack().load("println").call_from_stack().run()
9}
More examples
Hide additional examples
examples/closure.rs (line 14)
5fn main() {
6
7    let mut main = Fun::new()
8        .add_data(
9            Fun::new()
10                .store("m")
11                .add_data(
12                    Fun::new()
13                        .load("m")
14                        .mul()
15                        .as_value()
16                )
17                .as_value()
18        )
19        .store("multiply")
20
21        .add_data(num("2"))
22        .load("multiply")
23        .call_from_stack()
24        .store("double")
25
26        .add_data(num("3"))
27        .load("multiply")
28        .call_from_stack()
29        .store("triple")
30
31        .add_data(string("5 doubled is ")).print()
32        .add_data(num("5")).load("double")
33        .call_from_stack().println()
34
35        .add_data(string("7 doubled is ")).print()
36        .add_data(num("7")).load("double")
37        .call_from_stack().println()
38
39        .add_data(string("5 tripled is ")).print()
40        .add_data(num("5")).load("triple")
41        .call_from_stack().println()
42
43        .add_data(string("7 tripled is ")).print()
44        .add_data(num("7")).load("triple")
45        .call_from_stack().println();
46
47    main.run();
48}
Source

pub fn sub(&mut self) -> Self

Source

pub fn div(&mut self) -> Self

Source

pub fn not(&mut self) -> Self

Source

pub fn greater(&mut self) -> Self

Source

pub fn less(&mut self) -> Self

Examples found in repository?
examples/while.rs (line 25)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
Source

pub fn append_list(&mut self) -> Self

Source

pub fn pop_list(&mut self) -> Self

Source

pub fn list_from_stack(&mut self) -> Self

Source

pub fn eq(&mut self) -> Self

Source

pub fn index(&mut self) -> Self

Examples found in repository?
examples/example.rs (line 16)
4fn main() {
5
6    let mut main = Fun::new()
7        .add_list(&[
8            Fun::new().add_str("Hello world!").println().as_value(),
9            Fun::new().add_str("Im a function in a list!").println().as_value(),
10            Fun::new().add_str("Look at me go!").println().as_value()
11        ])
12        .store("my_list")
13
14        .add_fun(Fun::new()
15            .load("my_list")
16            .index()
17            .call_from_stack()
18        ).store("call_n")
19
20        .add_num("0")
21        .load("call_n")
22        .call_from_stack()
23        .add_num("1")
24        .load("call_n")
25        .call_from_stack()
26        .add_num("2")
27        .load("call_n")
28        .call_from_stack();
29
30    main.run();
31}
Source

pub fn get_attr(&mut self) -> Self

Source

pub fn set_attr(&mut self) -> Self

Source

pub fn while_function(&mut self) -> Self

Examples found in repository?
examples/while.rs (line 27)
6fn main() {
7
8
9    let mut main = Fun::new()
10        .add_num("0")
11        .store("a")
12        .add_fun(
13            Fun::new()
14                .load("a")
15                .add_num("1")
16                .add().store("a")
17
18                .add_str("#").print()
19                .load("a").println()
20        )
21        .add_fun(
22            Fun::new()
23                .add_num("1000")
24                .load("a")
25                .less()
26        )
27        .while_function()
28        .add_str("a is ")
29        .print()
30        .load("a")
31        .println()
32        ;
33
34    main.run();
35}
Source

pub fn if_function(&mut self) -> Self

Examples found in repository?
examples/return.rs (line 8)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0")
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}
More examples
Hide additional examples
examples/if.rs (line 8)
3fn main() {
4    let mut main = Fun::new()
5        .add_str("y")
6        .add_str("x")
7        .add_num("0") // change me to one or zero!
8        .if_function()
9        .println()
10        ;
11        
12    main.run();
13}

Trait Implementations§

Source§

impl Clone for Fun

Source§

fn clone(&self) -> Fun

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Fun

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Fun

§

impl RefUnwindSafe for Fun

§

impl Send for Fun

§

impl Sync for Fun

§

impl Unpin for Fun

§

impl UnsafeUnpin for Fun

§

impl UnwindSafe for Fun

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.