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-openingkeynote.jpg b/_images/rustlatam-openingkeynote.jpg deleted file mode 100644 index 6d38ce7..0000000 Binary files a/_images/rustlatam-openingkeynote.jpg and /dev/null 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/rustlatam-2019.html b/rustlatam-2019.html index 073ee5e..e6de878 100644 --- a/rustlatam-2019.html +++ b/rustlatam-2019.html @@ -93,118 +93,414 @@ -
- - - -
- -
-
- -
- -
-

Workshops

- -

Learning WebAssembly and Rust

- - -
-
- -
-
- -
- -
-

Talks Day

-
-
- -
-
-

Opening Keynote

-

Niko Matsakis

-
- -
- -
-
- -
-
-

Defense Against The Wrong Logic: Proactive Rust Coding

-

Michael Gattozzi

-
-
- -
-
-

Interop with Android, IOS and WASM in the same project

-

Otávio Pace

-
-
- -
-
-

Rebuilding the Stack for Serverlesso

-

Sergio Benitez

-
-
- -
-
-

WebAssembly with Rust

-

Kevin Hoffman

-
-
- -
-
-

Friendly Ferris: Developing Kind Compiler Errors

-

Esteban Kuber

-
-
- -
-
-

Procedural Macros vs Sliced Bread

-

Alex Crichton

-
-
- -
-
-

The Power of the "Where" Clause

-

Florian Gilcher

-
-
- -
-
-

Closing Keynote

-

Without Boats

-
-
+
+
+ + + +
+ +
+ +
+
+ +
+
+

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

+ + +
+
+ +
+
+

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.

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