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

Rust Tooling (October 2015)

Rust Tooling (October 2015)

What tools are available for Rust development?
This talk gives you an overview of ways to help you write better Rust code.

Matthias Endler

October 28, 2015
Tweet

More Decks by Matthias Endler

Other Decks in Programming

Transcript

  1. Matthias Endler - Backend Engineer at trivago - Deals with

    Website Performance - Worked a lot with Python and PHP - Played a bit with Golang - Not a Rust Programmer yet - Likes the ideas of Rust @matthiasendler
  2. What I like about… • PHP: Package manager, Community •

    Python: Syntax, Libraries • Golang: Tooling, Documentation • C: Speed, no overhead
  3. What I like about… • PHP: Package manager, Community •

    Python: Syntax, Libraries • Golang: Tooling, Documentation • C: Speed, no overhead RUST
  4. Fast feedback loops What we need: Awesome tooling How we

    get it: Well integrated All of them should be
  5. My tool wishlist Unit testing Package manager Syntax highlighting Formatting

    Code completion Debugging Code linter Benchmarking Profiling Code coverage
  6. My tool wishlist Unit testing: builtin Package manager Syntax highlighting

    Formatting Code completion Debugging Code linter Benchmarking Profiling Code coverage
  7. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting Formatting Code completion Debugging Code linter Benchmarking Profiling Code coverage
  8. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting Code completion Debugging Code linter Benchmarking Profiling Code coverage
  9. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion Debugging Code linter Benchmarking Profiling Code coverage
  10. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging Code linter Benchmarking Profiling Code coverage
  11. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter Benchmarking Profiling Code coverage
  12. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter: clippy Benchmarking Profiling Code coverage
  13. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter: clippy Benchmarking: builtin Profiling Code coverage
  14. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter: clippy Benchmarking: builtin Profiling: meh… Code coverage
  15. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter: clippy Benchmarking: builtin Profiling: meh… torch? Code coverage
  16. My tool wishlist Unit testing: builtin Package manager: cargo Syntax

    highlighting: atom-language-rust Formatting: rustfmt Code completion: racer Debugging: rust gdb? Code linter: clippy Benchmarking: builtin Profiling: meh… torch? Code coverage: kcov?
  17. kcov …is a code coverage tester for compiled programs, Python

    scripts and shell scripts language: rust matrix: fast_finish: true include: - rust: nightly env: FEATURES="--features nightly" sudo: false - rust: nightly env: FEATURES="--features nightly" BENCH=true sudo: false - rust: beta sudo: true after_success: | sudo apt-get install libcurl4-openssl-dev libelf-dev libdw-dev && wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz && tar xzf master.tar.gz && mkdir kcov-master/build && cd kcov-master/build && cmake .. && make && sudo make install && cd ../.. && kcov --coveralls-id=$TRAVIS_JOB_ID --exclude-pattern=/.cargo target/kcov target/debug/hyper-* Put this into your .travis.yml:
  18. We need to focus on those… Unit testing Package manager

    Syntax highlighting Formatting Code completion Debugging Code linter Benchmarking Profiling Code coverage
  19. Bonus rr - a reverse debugger
 (http://rr-project.org/) Dash - Offline

    API Documentation browser for Mac (https://kapeli.com/dash) Crates.io reverse package lookup
 (https://crates.io/crates/serde/reverse_dependencies)