This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn middle_name<'a>(full_name: &'a str) -> &'a str { | |
full_name.split_whitespace().nth(1).unwrap() | |
} | |
fn main() { | |
let name = String::from("Harry James Potter"); | |
let res = middle_name(&name); | |
assert_eq!(res, "James"); | |
// won't compile: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdlib.h> | |
#include <stdio.h> | |
#include <string.h> | |
const char *last_name(const char *full_name) | |
{ | |
return strrchr(full_name, ' ') + 1; | |
} | |
int main() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct A { | |
int x; | |
}; | |
struct B: A { | |
int y; | |
}; | |
struct C: B { | |
int z; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// this does not compile | |
fn middle_name(full_name: &str) -> &str { | |
full_name.split_whitespace().nth(1).unwrap() | |
} | |
fn main() { | |
let res; | |
{ | |
let name = String::from("Harry James Potter"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn middle_name(full_name: &str) -> &str { | |
full_name.split_whitespace().nth(1).unwrap() | |
} | |
fn main() { | |
let name = String::from("Harry James Potter"); | |
let res = middle_name(&name); | |
assert_eq!(res, "James"); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// takes v by (immutable) reference | |
fn count_occurences(v: &Vec<i32>, val: i32) -> usize { | |
v.into_iter().filter(|&&x| x == val).count() | |
} | |
fn main() { | |
let v = vec![2, 9, 3, 1, 3, 2, 5, 5, 2]; | |
// borrowing v for the iteration | |
for &item in &v { | |
// the first borrow is still active |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// without borrowing | |
fn print_sum1(v: Vec<i32>) -> Vec<i32> { | |
println!("{}", v[0] + v[1]); | |
// returning v as a means of transferring ownership back | |
// by the way, there's no need to use "return" if it's the last line | |
// because Rust is expression-based | |
v | |
} | |
// with borrowing, explicit references |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn print_sum(a: i32, b: i32) { | |
println!("{}", a + b); | |
// the copied a and b are dropped and deallocated here | |
} | |
fn main() { | |
let a = 35; | |
let b = 42; | |
// copy the values and transfer | |
// ownership over the copies to print_sum: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn print_sum(v: Vec<i32>) { | |
println!("{}", v[0] + v[1]); | |
// v is dropped and deallocated here | |
} | |
fn main() { | |
let mut v = Vec::new(); // creating the resource | |
for i in 1..1000 { | |
v.push(i); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var highlight = "NAME GOES HERE"; | |
(function() { | |
"use strict"; | |
var rows = document.getElementsByClassName("st_team"); | |
var found; | |
for(var i = 1; i < rows.length - 3; i++) |