mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-24 10:01:38 +00:00
[rust/en] Function pointer type added (#4107)
* Function pointer type added * String slice details added. * String slice view explanation.
This commit is contained in:
parent
3cbcd37434
commit
e0f5bcf36a
@ -89,11 +89,16 @@ fn main() {
|
|||||||
println!("{} {}", f, x); // 1.3 hello world
|
println!("{} {}", f, x); // 1.3 hello world
|
||||||
|
|
||||||
// A `String` – a heap-allocated string
|
// 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();
|
let s: String = "hello world".to_string();
|
||||||
|
|
||||||
// A string slice – an immutable view into another string
|
// A string slice – an immutable view into another string
|
||||||
// The string buffer can be statically allocated like in a string literal
|
// This is basically an immutable pair of pointers to a string – it doesn’t
|
||||||
// or contained in another object (in this case, `s`)
|
// 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;
|
let s_slice: &str = &s;
|
||||||
|
|
||||||
println!("{} {}", s, s_slice); // hello world hello world
|
println!("{} {}", s, s_slice); // hello world hello world
|
||||||
@ -205,6 +210,21 @@ fn main() {
|
|||||||
let another_foo = Foo { bar: 1 };
|
let another_foo = Foo { bar: 1 };
|
||||||
println!("{:?}", another_foo.frobnicate()); // Some(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 //
|
// 3. Pattern matching //
|
||||||
/////////////////////////
|
/////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user