Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Porque Rust?

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Porque Rust?

Avatar for Fabio Utzig

Fabio Utzig

June 01, 2018
Tweet

More Decks by Fabio Utzig

Other Decks in Programming

Transcript

  1. • Apache Mynewt - https://mynewt.incubator.apache.org/ • Apache Mynewt Overview -

    https://www.youtube.com/ watch?v=4xRbGMDcMu8 Saturday, 19 November 16
  2. Rust is a systems programming language that runs blazingly fast,

    prevents segfaults, and guarantees thread safety. Saturday, 19 November 16
  3. ▪ zero-cost abstractions ▪ move semantics ▪ guaranteed memory safety

    ▪ threads without data races ▪ trait-based generics ▪ pattern matching ▪ type inference ▪ minimal runtime ▪ efficient C bindings Saturday, 19 November 16
  4. Público alvo • Caso 1: Passei muitos anos de minha

    vida escrevendo bugs (não-intencionais) em C++, já deu! • Caso 2: Python/Ruby são super-legais mas podia ser um pouco mais rápido né (tipo 50x?) Saturday, 19 November 16
  5. Onde eu baixo? • Provavelmente já tem na sua distribuição

    Linux! • Tem no Mac com Homebrew, ports/ packages no OpenBSD e FreeBSD (NetBSD/DragonflyBSD tem?) • rustup (https://github.com/rust-lang- nursery/rustup.rs) ou multirust! Saturday, 19 November 16
  6. Cargo • Gerenciador estilo npm (Node.js) / pip (Python), gem/bundler

    (Ruby) • Criar projetos, gerenciar dependências, compilar, rodar, empacotar, upload • https://crates.io/ -The Rust community’s crate host Saturday, 19 November 16
  7. Tipos primitivos • bool (true/false) • char (unicode) • i8

    a i64 (com sinal) e u8 a u64 (sem sinal) • f32 e f64 (floats) • isize / usize - dependentes da arquitetura Saturday, 19 November 16
  8. Tipos primitivos • Arrays (tamanho fixo) : let a =

    [0,1,2,3,4]; • Slices (são views): let m: &a[1..4]; • str: string primitiva • Tuplas: let x: (1, 2, 3); Saturday, 19 November 16
  9. Estruturas de controle • loop (while infinito!) • while •

    for • if / else • match (vc leva um switch e muito mais!) Saturday, 19 November 16
  10. Collections • Vec, VecDeque, LinkedList • HashMap, BTreeMap • HashSet,

    BTreeSet • BinaryHeap Saturday, 19 November 16
  11. &str vs String • &str: strings literais, tipo char *

    (C/C++), tamanho fixo • String: dinâmico alocado no heap, tipo classes “String” em outras linguagens Saturday, 19 November 16
  12. “Orientação a objeto” • A terminologia objeto/classe não é comum

    em rust. • O normal é dizer “implementar métodos em valores” Saturday, 19 November 16
  13. Structs / Impl • Tem 3 tipos sendo 2 mais

    comuns: struct e struct tuple • Impl para adicionar métodos a um valor Saturday, 19 November 16
  14. Valeu! - Perguntas? • https://www.rust-lang.org/ • https://crates.io • https://doc.rust-lang.org/stable/book/ •

    https://users.rust-lang.org/ • Alex Crichton (https://github.com/alexcrichton), Niko Matsakis (https://github.com/nikomatsakis), Steve Klabnik (https://github.com/steveklabnik) • Embarcados? => Jorge Aparicio (https:// github.com/japaric/) Saturday, 19 November 16
  15. Extras • Generics • Option<T> / Result<T> • Rc<T> /

    Arc<T> • Lifetimes • pub • closures Saturday, 19 November 16