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 | |
parent | 3cbcd374341bc9b952e4ee0c3feffe77f8deb69c (diff) |
[rust/en] Function pointer type added (#4107)
* Function pointer type added
* String slice details added.
* String slice view explanation.
-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 // ///////////////////////// |