官术网_书友最值得收藏!

How it works...

Let's go through the code to understand the execution flow.

cargo is described in depth in Chapter 2Managing Projects with Cargo, in this book.

The initial snippet is generated when cargo new hello-world is executed in step 1. As a project of type binary, a main function is required and rustc will be looking for it. Upon calling cargo run, cargo orchestrates compilation (with rustc) and linking (msvc on Windows, cc on *nix) and runs the resultant binary via its entry point: the main function (step 5). 

In the function we create in step 3, we write a series of print!/println!/eprintln! statements, which are Rust macros. These macros facilitate the writing to the standard output or standard error channels of a command-line application and include additional arguments. In fact, if arguments are missing, the compiler won't compile the program.

Rust's macros work directly on the syntax tree of the language, providing type safety and the ability to check the parameters and arguments. Therefore, they can be seen as a function call with a few special abilities—but more on that in Chapter 6, Expressing Yourself with Macros.   

The various arguments and the template string are combined using formatters, a powerful way to add real variables to the output without the need of concatenations or similar workarounds. This will reduce the number of allocations, considerably improving performance and memory efficiency. There is a wide range of how to format data types; to understand it more deeply, check out Rust's excellent documentation (https://doc.rust-lang.org/std/fmt/). 

The last step then shows the output that the various combinations produced.

We've successfully learned to work with the command line I/O. Now, let's move on to the next recipe.

主站蜘蛛池模板: 西吉县| 乾安县| 呈贡县| 湖南省| 桐乡市| 湟源县| 隆化县| 新郑市| 左权县| 盐津县| 徐水县| 繁昌县| 淮阳县| 黑水县| 昌江| 锡林郭勒盟| 阳春市| 阿合奇县| 浦江县| 华安县| 韶山市| 巴林右旗| 峡江县| 东乡县| 内黄县| 广州市| 文山县| 洪雅县| 峨山| 六枝特区| 乌苏市| 克拉玛依市| 合水县| 阳西县| 仙游县| 依兰县| 孝昌县| 安义县| 玉树县| 威远县| 亳州市|