diff options
| author | Maximilian Sonnenburg <25778959+LamdaLamdaLamda@users.noreply.github.com> | 2022-01-03 18:16:59 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-04 01:16:59 +0800 | 
| commit | e0f5bcf36a4eb27c72473ce5dbab960792e364cc (patch) | |
| tree | 5b1b7c1bd924073c29b63fa7a41b95596588a8c6 /rust.html.markdown | |
| parent | 3cbcd374341bc9b952e4ee0c3feffe77f8deb69c (diff) | |
[rust/en] Function pointer type added (#4107)
* Function pointer type added
* String slice details added.
* String slice view explanation.
Diffstat (limited to 'rust.html.markdown')
| -rw-r--r-- | rust.html.markdown | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/rust.html.markdown b/rust.html.markdown index 9cb44d04..9e07e005 100644 --- a/rust.html.markdown +++ b/rust.html.markdown @@ -89,11 +89,16 @@ fn main() {      println!("{} {}", f, x); // 1.3 hello world      // A `String` – a heap-allocated string +    // Stored as a `Vec<u8>` and always hold a valid UTF-8 sequence,  +    // which is not null terminated.      let s: String = "hello world".to_string();      // A string slice – an immutable view into another string -    // The string buffer can be statically allocated like in a string literal -    // or contained in another object (in this case, `s`) +    // This is basically an immutable pair of pointers to a string – it doesn’t +    // actually contain the contents of a string, just a pointer to +    // the begin and a pointer to the end of a string buffer, +    // statically allocated or contained in another object (in this case, `s`). +    // The string slice is like a view `&[u8]` into `Vec<T>`.      let s_slice: &str = &s;      println!("{} {}", s, s_slice); // hello world hello world @@ -205,6 +210,21 @@ fn main() {      let another_foo = Foo { bar: 1 };      println!("{:?}", another_foo.frobnicate()); // Some(1) +    // Function pointer types //  + +    fn fibonacci(n: u32) -> u32 { +        match n { +            0 => 1, +            1 => 1, +            _ => fibonacci(n - 1) + fibonacci(n - 2), +        } +    } + +    type FunctionPointer = fn(u32) -> u32; + +    let fib : FunctionPointer = fibonacci; +    println!("Fib: {}", fib(4)); +      /////////////////////////      // 3. Pattern matching //      ///////////////////////// | 
