Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Preface
Who this book is for What this book covers To get the most out of this book
Download the example code files Download the color images Conventions used
Get in touch
Reviews
Basics of Rust
Getting to know Rust
Installing Rust
Windows Linux/Mac Test your installation
Documentation and reference Main function
Variables
Built-in data types
Integer types Floating-point types Boolean type Character type
Control flow
Writing a condition Creating while loops
Creating functions Creating structures References
Clone types Copy types Mutable references
Methods
Constructors
Tuples Enumerations Pattern matching
Irrefutable patterns
Traits
Default methods Associated types Rules
Generics
The Option type
Arrays
Slices For loops
Macros
Multiple pattern rules Repetitions
Optional quantifier
Summary
Starting with SDL
Understanding Rust crates Installing SDL2
Installing SDL2 on Linux Installing SDL2 on Mac Installing SDL2 on Windows
Windows with Build Script Windows (MinGW) Windows (MSVC)
Setting up your Rust project
Cargo and crates.io The docs.rs documentation
Back to our Cargo.toml file
Rust's modules Tetris Creating a window Drawing
Playing with Options Solution Loading images
Installing SDL2_image on Mac Installing SDL2_image on Linux Installing SDL2_image on Windows
Playing with features Playing with images
Handling files
Saving/loading high scores Iterators Reading formatted data from files
Summary
Events and Basic Game Mechanisms
Writing Tetris
Tetrimino Creating tetriminos Generating a tetrimino
Rotating a tetrimino
Tetris struct Interacting with the game map SDL events Score, level, lines sent
Levels and lines sent Highscores loading/overwriting
Summary
Adding All Game Mechanisms
Getting started with game mechanisms
Rendering UI
Rendering initialization Rendering
Playing with fonts
Install on OS X Install on Linux Other system/package manager
Loading font
Summary
Creating a Music Player
Installing the prerequisite
Installing GTK+ on Linux Installing GTK+ on Mac Installing GTK+ on Windows
Creating your first window
Closure Preventing the default behavior of an event
Creating a toolbar
Stock item
Improving the organization of the application Adding tool button events
Lifetime Ownership
Containers
Types of containers The Box container
Adding a playlist
The MVC pattern
Opening MP3 files
Reference-counting pointer ID3— MP3 metadata Opening files with a file dialog Deleting a song Displaying the cover when playing a song
Summary
Implementing the Engine of the Music Player
Installing the dependencies
Installing dependencies on Linux Installing dependencies on Mac Installing dependencies on Windows
Decoding MP3 files
Adding dependencies Implementing an MP3 decoder Getting the frame samples
Playing music
Event loop
Atomic reference counting Mutual exclusion Send trait Sync trait Lock-free data structures
Playing music
Mutex guard RAII
Using the music player
Pausing and resuming the song
Interior mutability
Showing the progression of the song Improving CPU usage
Condition variable
Showing the song's current time Loading and saving the playlist
Saving a playlist Loading a playlist
Using gstreamer for playback Summary
Music Player in a More Rusty Way with Relm
Reasons to use relm instead of gtk-rs directly
State mutation Asynchronous user interface Creating custom widgets
Creating a window with relm
Installing Rust nightly
Widget
Model Messages View
Properties Events Code generation
Update function
Adding child widgets
One-way data binding Post-initialization of the view Dialogs Other methods
Playlist
Model parameter
Adding a relm widget Communicating between widgets
Communicating with the same widget Emit With different widgets
Handle messages from a relm widget Syntax sugar to send a message to another relm widget
Playing music Computing the song duration Using relm on stable Rust Relm widgets data binding Summary
Understanding FTP
File transfer protocol
Introduction to FTP Implementing simple chunks of commands
Starting with basics
Commands implementation
Implementing the SYST command Implementing the USER command Implementing the NOOP command Implementing the PWD command Implementing the TYPE command Implementing the LIST command
Implementing the PASV command Back to the LIST command
Implementing the CWD command Implementing the CDUP command Full implementation of the LIST command Implementing the MKD command Implementing the RMD command
Testing it
Summary
Implementing an Asynchronous FTP Server
Advantages of asynchronous IO Disadvantages of asynchronous IO Creating the new project Using Tokio
Tokio event loop
Using futures Handling errors
Unwrapping Custom error type
Displaying the error Composing error types The ? operator, revisited
Starting the Tokio event loop Starting the server
Handling clients Handling commands FTP codec
Decoding FTP commands Encoding FTP commands
Handling commands Managing the current working directory
Printing the current directory Changing the current directory
Setting the transfer type Entering passive mode
Bytes codec
Decoding data bytes Encoding data bytes
Quitting Creating directories Removing directories Summary
Implementing Asynchronous File Transfer
Listing files Downloading a file Uploading files Going further!
Configuration Securing the config.toml access
Unit tests
Backtraces Testing failures Ignoring tests
Integration tests
Teardown Print output to stdout
Documentation
Documenting a crate Documenting a module Headers Code blocks Documenting an enumeration (or any type with public fields) Generating the documentation Warning about public items without documentation Hiding items from the documentation
Documentation tests
Tags
ignore compile_fail no_run should_panic Combining flags?
About the doc blocks themselves
Hiding code blocks lines
Fuzzing tests Summary
Rust Best Practices
Rust best practices
Slices API tips and improvements
Explaining the Some function Using the Path function
Usage tips
Builder pattern
Playing with mutable borrows Playing with moves
Code readability
Big number formatting Specifying types Matching
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion