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

Porque Rust?

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