diff --git a/porque-rust.html b/porque-rust.html index 588aa48..47acd44 100644 --- a/porque-rust.html +++ b/porque-rust.html @@ -74,7 +74,7 @@
-

Porque Rust

+

Porque Rust

@@ -103,69 +103,69 @@

... pelo 4⁰ ano seguido.

-

-
-

"Low Level Language with High Level Abstractions"

-
- -
-

Resultado final com performance semelhante ao C...

- - - - -
- -
-

... mas com abstrações em algo nível

- -
    -
  • Strings sem tamanho fixo
  • -
  • Listas
  • -
  • Mapas
  • -
- - -
-
- -
+
+

"Low Level Language with High Level Abstractions"

+
+ +
+

Resultado final com performance semelhante ao C...

+ + + + +
+ +
+

... mas com abstrações em algo nível

+ +
    +
  • Strings sem tamanho fixo
  • +
  • Listas
  • +
  • Mapas
  • +
+ + +
+
+ +

Imutabilidade por Default

- +
@@ -189,10 +189,10 @@ fn main() { | ^^^^^ cannot assign twice to immutable variable - +
@@ -204,13 +204,13 @@ fn main() { } -
@@ -218,14 +218,14 @@ fn main() {

Borrow Checker

-
@@ -237,11 +237,11 @@ a = String::from("hello");
"Variável a tem o valor "hello"" - +
@@ -255,24 +255,24 @@ a = String::from("hello");
- - + + -
+
-
@@ -306,16 +306,18 @@ error[E0382]: borrow of moved value: `a` 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 + = note: move occurs because `a` has type + `std::string::String`, which does not + implement the `Copy` trait - +
@@ -323,9 +325,9 @@ error[E0382]: borrow of moved value: `a`

References

- +
@@ -341,10 +343,10 @@ fn main() {
- +
@@ -354,39 +356,44 @@ fn main() { Uma região de memória tem apenas um dono.

+

+ Passar um valor (região de memória) de uma variável + para outra, troca o dono. +

+

A região é desalocada quando o dono sair de escopo.

- +

Regras do Borrow Checker

- Uma região de memória pode ter inifitas referências. + Uma região de memória pode ter infinitas referências.

... desde que elas não durem mais do que o dono.

- +
@@ -405,9 +412,9 @@ fn main() {
- +
@@ -415,11 +422,11 @@ fn main() { canal <- presente   - +
@@ -427,129 +434,112 @@ canal <- presente canal <- presente presente.abrir() -
-
-

E GC?

+
+

E GC?

-

GC não é determinístico.

+

GC não é determinístico.

-
+ Sem GC, a execução do código torna-se determinística e + tu pode ter certeza da velocidade de execução. + +
Swift 5 Exclusivity Enforcement - +
-
-
-

Hora da anedota!

- - -
- -
-

localtime

- -

SimpleDateFormatter

- - -
- -
-

Rust resolveria isso?

- -

Não

- -

... na verdade, nem ia compilar.

- - -
-
-
-

Tipos Algébricos

+

Hora da anedota!

-

(structs)

+
-

struct

+

localtime

-

-struct Present {
-    package_color: String,
-    content: String
-}
-                        
+

SimpleDateFormatter

+ + +
+ +
+

Rust resolveria isso?

+ +

Não

+ +

... na verdade, nem ia compilar.

+ + +
+
+ +
+
+

Tipos Algébricos

@@ -680,34 +670,51 @@ OK(())

Macros

- ? + ? +
+
+ +
+

Structs

+ +
+

+struct Present {
+    package_color: String,
+    content: String
+}
+                        
+ +
-
-
-

Traits/Generics

-
+
+
+

Traits/Generics

+
-
+

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

+                    
+

 trait Summary {
     fn summarize(&self) -> String;
 }
-						
-
+
+
-
-

+                    
+

 struct Super {
     phrase: String
 }
@@ -721,7 +728,7 @@ impl Summary for Super {
     }
 }
                         
-
+

@@ -732,7 +739,18 @@ fn get_summary(summarizable: T) -> String
 }
                         
-
+ +
+

Structs genéricas

+ +

+struct Point {
+    x: T,
+    y: T
+}
+                        
+
+
@@ -768,23 +786,23 @@ fn get_summary(summarizable: T) -> String
-
-
-

Falando em WASM...

-
+
+
+

Falando em WASM...

+
-
-

WASM

+
+

WASM

-

wasm-pack

-
+

wasm-pack

+
-
-

WASI

+
+

WASI

-

The WebAssembly System Interface

-
-
+

The WebAssembly System Interface

+
+