From e2b886949b20baaa7c489837617605b3541ece6c Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Tue, 9 Apr 2019 13:12:57 -0300 Subject: [PATCH] Writing a Rust presentation --- _images/rust-ferris.png | Bin 0 -> 48613 bytes _images/rust-memory.png | Bin 0 -> 6548 bytes _images/rust-reference.png | Bin 0 -> 8643 bytes porque-rust.html | 514 +++++++++++++++++++++++++++++++++++++ 4 files changed, 514 insertions(+) create mode 100644 _images/rust-ferris.png create mode 100644 _images/rust-memory.png create mode 100644 _images/rust-reference.png create mode 100644 porque-rust.html diff --git a/_images/rust-ferris.png b/_images/rust-ferris.png new file mode 100644 index 0000000000000000000000000000000000000000..d553e7481388bac4c6cf408b2588a75b9f0fe40c GIT binary patch literal 48613 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%0D;aYh*7?(*s2xZQeO?^=0N+m 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 P|7NSIsG(3JXBqlGpYioq literal 0 HcmV?d00001 diff --git a/_images/rust-memory.png b/_images/rust-memory.png new file mode 100644 index 0000000000000000000000000000000000000000..1db55bc79f256b0002e04c6505e542d7550ccbcc GIT binary patch literal 6548 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 literal 0 HcmV?d00001 diff --git a/_images/rust-reference.png b/_images/rust-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..394b801423be0f0124b31c14dcfbdc6b53ef6257 GIT binary patch literal 8643 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 M71ZU6ADR3A2b&^aFaQ7m literal 0 HcmV?d00001 diff --git a/porque-rust.html b/porque-rust.html new file mode 100644 index 0000000..74f6eac --- /dev/null +++ b/porque-rust.html @@ -0,0 +1,514 @@ + + + + + + Por que você deveria aprender Rust + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

Por Que Rust

+
+
+ +
+
+

+ A languagem mais amada segundo o StackOverflow Survey + +

... pelo 4⁰ ano seguido.

+

+
+
+ +
+
+

Imutabilidade por Default

+
+ +
+

+fn main() {
+    let a = 2;
+    a = 3;
+    println!("{}", a);
+}
+						
+
+ +
+

+3 |     let a = 2;
+  |         -
+  |         |
+  |         first assignment to `a`
+  |         help: make this binding mutable: `mut a`
+4 |     a = 3;
+  |     ^^^^^ cannot assign twice to immutable variable
+						
+
+ +
+

+fn main() {
+    let mut a = 2;
+    a = 3;
+    println!("{}", a);
+}
+						
+
+
+ +
+
+

Borrow Checker

+
+ +
+

+a = 2
+						
+
+ +
+ "Variável a tem o valor 2" +
+ +
+
+ "Posição de memória apontada por a tem o valor 2" +
+ +
+

+0x3f5cbf89 = 2
+							
+
+
+ +
+
+ A language that doesn't affect the way you think + about programming, is not worth knowing. +
+ +
+ -- Alan Perlis, "ALGOL" +
+
+ +
+

+fn main() {
+    let a = String::from("hello");
+    let _b = a;
+    println!("{}", a)
+}
+						
+
+ +
+

+error[E0382]: borrow of moved value: `a`
+ --> src/main.rs:5:20
+  |
+4 |     let _b = a;
+  |              - value moved here
+5 |     println!("{}", a)
+  |                    ^ value borrowed here after move
+  |
+  = note: move occurs because `a` has type `std::string::String`, which does not implement the `Copy` trait
+						
+
+ +
+

E se eu precisar acessar a variável em mais de um lugar?

+ +

References

+
+ +
+

+fn main() {
+    let a = String::from("hello");
+    let _b = &a;
+    println!("{}", a)
+}
+						
+
+ +
+

Regras do Borrow Checker

+ +
    +
  • Uma região de memória tem apenas um dono.
  • +
  • Uma região de memória pode ter inifitas referências + + desde que elas não durem mais do que o dono. + +
  • +
  • + É possível ter uma referência mutável de uma região de memória + + mas para haver uma referência mutável ela deve ser a única + referência. + +
  • +
+
+ +
+ +
+ +
+ +
+ +
+ Swift 5 Exclusivity Enforcement +
+
+ +
+
+

Enums

+
+ +
+

+enum IpAddr {
+   V4,
+   V6
+}
+						
+
+ +
+

+enum IpAddr {
+    V4(String),
+    V6(String),
+}
+						
+
+ +
+

+let home = IpAddr::V4(String::from("127.0.0.1");
+
+match home {
+    V4(address) => println!("IPv4 addr: {}", address),
+    V6(address) => println!("Ipv6 addr: {}", address),
+}
+						
+
+ +
+

+enum Option<T> {
+    Some(T),
+    None
+}
+						
+
+
+ +
+
+

Error Control

+
+ +
+

+try:
+    something()
+except Exception:
+    pass
+						
+
+ +
+

+try {
+   something();
+} catch (Exception ex) {
+   System.out.println(ex);
+}
+						
+
+ +
+

+FILE* f = fopen("someting.txt", "wb");
+fprintf(f, "Done!");
+fclose(f);
+						
+
+ +
+
+ Onde o erro foi tratado nisso? +
+
+ +
+

+enum Result<T, E> {
+    Ok(T),
+    Err(E),
+}
+						
+
+ +
+

+File::create("something.txt") match {
+    Ok(fp) => fp.write_all(b"Hello world"),
+    Err(err) => println!("Failure! {}", err),
+}
+						
+
+ +
+

+File::create("something.txt") match {
+    Ok(fp) => fp.write_all(b"Hello world") match {
+        Ok(_) => (),
+        Err(err) => println!("Can't write! {}", err),
+    }
+    Err(err) => println!("Failure! {}", err),
+}
+						
+
+ +
+

+let mut file = File::create("something.txt).unwrap();
+file.write(b"Hello world").unwrap();
+                        
+
+ +
+

+let mut file = File::create("something.txt)?;
+file.write(b"Hello world")?;
+OK(())
+                        
+
+
+ +
+
+

Crazy stuff

+
+ +
+ How Rust’s standard library was vulnerable for years and nobody noticed +
+ +
+ No, the problem isn’t “bad coders” +
+ +
+ 4.5k issues no Github +
+ +
+ rustup + +
+ stable-x86_64-pc-windows-msvc +
+ +
+ armv7-unknown-linux-gnueabihf +
+ +
+ wasm32-unknown-unknown (WebAssembly) +
+
+
+ +
+
+

Bibliotecas

+
+ +
+

Rayon

+ +

+fn sum_of_squares(input: &[i32]) -> i32 {
+    input.iter()
+         .map(|&i| i * i)
+         .sum()
+}
+						
+
+ +
+

Rayon

+ +

+fn sum_of_squares(input: &[i32]) -> i32 {
+    input.par_iter()
+         .map(|&i| i * i)
+         .sum()
+}
+						
+
+ +
+

Log-Derive

+ +

+#[logfn(ok = "TRACE", err = "ERROR")]
+fn call_isan(num: &str) -> Result<Success, Error> {
+    if num.len() >= 10 && num.len() <= 15 {
+        Ok(Success)
+    } else {
+        Err(Error)
+    }
+}
+                        
+
+
+ +
+
+

E quem usa?

+
+ +
+

Magic Pocket

+ +

Dropbox

+ +

Petabyte storage

+
+ +
+

Servo

+ +

Mozilla

+ +

Base do Firefox Quantum

+
+ +
+

Azure

+ +

Microsoft

+ +

Usado na parte de IoT do Azure

+
+ +
+

Tor

+
+
+ +
+
+
+
+ + + + + + + +