diff --git a/_images/rustlatam-asmjs.jpg b/_images/rustlatam-asmjs.jpg new file mode 100644 index 0000000..14faf4b Binary files /dev/null and b/_images/rustlatam-asmjs.jpg differ diff --git a/_images/rustlatam-async1.jpg b/_images/rustlatam-async1.jpg new file mode 100644 index 0000000..29af7c3 Binary files /dev/null and b/_images/rustlatam-async1.jpg differ diff --git a/_images/rustlatam-async2.jpg b/_images/rustlatam-async2.jpg new file mode 100644 index 0000000..df0990f Binary files /dev/null and b/_images/rustlatam-async2.jpg differ diff --git a/_images/rustlatam-defensive.png b/_images/rustlatam-defensive.png new file mode 100644 index 0000000..3c6c0e0 Binary files /dev/null and b/_images/rustlatam-defensive.png differ diff --git a/_images/rustlatam-openingkeynote1.png b/_images/rustlatam-openingkeynote1.png new file mode 100644 index 0000000..8f3b2cc Binary files /dev/null and b/_images/rustlatam-openingkeynote1.png differ diff --git a/_images/rustlatam-openingkeynote2.png b/_images/rustlatam-openingkeynote2.png new file mode 100644 index 0000000..de224d4 Binary files /dev/null and b/_images/rustlatam-openingkeynote2.png differ diff --git a/_images/rustlatam-openingkeynote3.png b/_images/rustlatam-openingkeynote3.png new file mode 100644 index 0000000..d9a7e95 Binary files /dev/null and b/_images/rustlatam-openingkeynote3.png differ diff --git a/_images/rustlatam-openingkeynote4.png b/_images/rustlatam-openingkeynote4.png new file mode 100644 index 0000000..2c833d5 Binary files /dev/null and b/_images/rustlatam-openingkeynote4.png differ diff --git a/_images/rustlatam-travel.png b/_images/rustlatam-travel.png new file mode 100644 index 0000000..f53a824 Binary files /dev/null and b/_images/rustlatam-travel.png differ diff --git a/_images/rustlatam.png b/_images/rustlatam.png new file mode 100644 index 0000000..3a1a454 Binary files /dev/null and b/_images/rustlatam.png differ diff --git a/_images/several-song-filled-hours-later.jpg b/_images/several-song-filled-hours-later.jpg new file mode 100644 index 0000000..048330e Binary files /dev/null and b/_images/several-song-filled-hours-later.jpg differ diff --git a/_images/the-next-day.jpg b/_images/the-next-day.jpg new file mode 100644 index 0000000..bfa16aa Binary files /dev/null and b/_images/the-next-day.jpg differ diff --git a/rustlatam-2019.html b/rustlatam-2019.html new file mode 100644 index 0000000..e6de878 --- /dev/null +++ b/rustlatam-2019.html @@ -0,0 +1,535 @@ + + + + + + Rust LATAM 2019 + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

Rust Latam 2019

+
+
+ +
+
+ Me + +
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+
+ +
+
+

Workshops

+ +

+ + Learning WebAssembly and Rust + +

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

Talks Day

+
+
+ +
+
+

+ + Opening Keynote + +

+ +

Niko Matsakis

+
+ +
+

História do Rust

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

"Rust is Open"

+
+
+ +
+
+

+ + Defense Against The Wrong Logic: Proactive Rust Coding + +

+

Michael Gattozzi

+
+ +
+

type é para áliases.

+ +

+type Farenheit = i32;
+type Celsius = i32;
+
+fn is_it_hot(t: Farenheit) -> bool;
+
+let temp: Celsius = 32;
+is_it_hot(temp);
+                        
+
+ +
+

+struct Celsius(i32);
+struct Farenheit(i32);
+                        
+
+ +
+

+impl Into<Celsius> for Farenheit {
+    fn into(c: Celsius) -> Self {
+        Self(((c.0 + 9) / 5) as i32 + 32);
+    }
+}
+
+is_it_hot(temp.into());
+                        
+
+ +
+ +
+
+ +
+
+

+ + Interop with Android, IOS and WASM in the same project + +

+

Otávio Pace

+
+ +
+

FFI

+ + + + + + + + + + + + + + + + + + + + + + + + + +
OSHow?
iOSC integration
AndroidJNI
WebWASM
+
+ +
+

+mod common;
+
+#[cfg(target_os = "android")]
+mod android;
+
+#[cfg(target_os = "ios")]
+mod ios;
+
+#[cfg(target_arch = "wasm32")]
+mod wasm;
+                        
+
+
+ +
+
+

Rebuilding the Stack for Serverless

+

Sergio Benitez

+
+ +
+

Cold Start Preformance

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ServiceTime
AWS Lambda~1.5s
Google Cloud Functions>2s
Fastly Terrarium (WASM)~500ms
$2.50 VPS + NGINX~30ms
+ +
+ +
+

Idea

+ +
    +
  • Load executable directly into memory
  • +
  • Run code
  • +
+
+
+ +
+
+

WebAssembly with Rust

+

Kevin Hoffman

+
+ +
+

+ Autor do livro + Programming WebAssembly with Rust +

+
+ +
+ +
+
+ +
+
+

+ + Friendly Ferris: Developing Kind Compiler Errors + +

+

Esteban Kuber

+
+
+ +
+
+

+ + Procedural Macros vs Sliced Bread + +

+

Alex Crichton

+
+ +
+

+#[proc_macro]
+pub fn println(input: TokenStream) -> TokenStream
+{
+   // ???
+}
+                        
+
+
+ +
+
+

The Power of the "Where" Clause

+

Florian Gilcher

+
+ +
+

"Don't start out very generic, refactor towards it!"

+
+ +
+

+fn debug_iter<I>(iter: I) 
+where
+    I: Iterator,
+    I::Item: Debug
+{
+    // ...
+}
+                        
+
+ +
+

+trait State { }
+trait TerminalState { }
+                        
+
+ +
+

+trait TransitionTo<S>
+where S: State,
+      Self: State
+{
+    fn transition(self) -> S;
+}
+
+trait Terminate
+where Self: TerminalState
+{
+    fn terminate(self);
+}
+                        
+
+ +
+

+struct Start;
+impl State for Start {}
+
+struct Loop;
+impl State for Loop {}
+
+struct Stop;
+impl State for Stop {}
+impl TerminalState for Stop {}
+                        
+
+ +
+

+impl TransitionTo<Loop> for Start {
+    fn transition(self) -> Loop { ... }
+}
+
+impl TransitionTo<Loop> for Loop {
+    fn transition(self) -> Loop { ... }
+}
+
+impl TransitionTo<End> for Loop {
+    fn transition(self) -> End { ... }
+}
+
+impl Terminate for End {
+    fn terminate(self) { ... }
+}
+                        
+
+ +
+

+fn main() {
+    let initial = Start;
+    let next: Loop = initial.transition();
+    let next: Loop = next.transition();
+    let next: End = next.transition();
+    next.terminate();
+}
+                        
+
+
+ +
+
+

Closing Keynote

+

Without Boats

+
+ +
+

Estado geral do async em Rust.

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