<!DOCTYPE HTML>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< html  lang = "en" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    < head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < meta  charset = "UTF-8" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < title > 性能 - Rust 程序设计语言 简体中文版< / title > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < meta  content = "text/html; charset=utf-8"  http-equiv = "Content-Type" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < meta  name = "description"  content = "Rust 程序设计语言 简体中文版" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < meta  name = "viewport"  content = "width=device-width, initial-scale=1" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < base  href = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  rel = "stylesheet"  href = "book.css" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  href = 'https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800'  rel = 'stylesheet'  type = 'text/css' > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  rel = "shortcut icon"  href = "favicon.png" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Font Awesome  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  rel = "stylesheet"  href = "https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  rel = "stylesheet"  href = "highlight.css" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < link  rel = "stylesheet"  href = "tomorrow-night.css" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  MathJax  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  type = "text/javascript"  src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Fetch JQuery from CDN but have a local fallback  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  src = "https://code.jquery.com/jquery-2.1.4.min.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if (typeof jQuery == 'undefined') {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                document.write(unescape("%3Cscript src='jquery.js'%3E%3C/script%3E"));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    < / head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    < body  class = "light" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Set the theme before any content is loaded, prevents flash  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            var theme = localStorage.getItem('theme');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if (theme == null) { theme = 'light'; }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            $('body').removeClass().addClass(theme);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Hide / unhide sidebar before it is displayed  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            var sidebar = localStorage.getItem('sidebar');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if (sidebar === "hidden") { $("html").addClass("sidebar-hidden") }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            else if (sidebar === "visible") { $("html").addClass("sidebar-visible") }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < div  id = "sidebar"  class = "sidebar" > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								            < ul  class = "chapter" > < li > < a  href = "ch01-00-introduction.html" > < strong > 1.< / strong >  介绍< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch01-01-installation.html" > < strong > 1.1.< / strong >  安装< / a > < / li > < li > < a  href = "ch01-02-hello-world.html" > < strong > 1.2.< / strong >  Hello, World!< / a > < / li > < / ul > < / li > < li > < a  href = "ch02-00-guessing-game-tutorial.html" > < strong > 2.< / strong >  猜猜看教程< / a > < / li > < li > < a  href = "ch03-00-common-programming-concepts.html" > < strong > 3.< / strong >  通用编程概念< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch03-01-variables-and-mutability.html" > < strong > 3.1.< / strong >  变量和可变性< / a > < / li > < li > < a  href = "ch03-02-data-types.html" > < strong > 3.2.< / strong >  数据类型< / a > < / li > < li > < a  href = "ch03-03-how-functions-work.html" > < strong > 3.3.< / strong >  函数如何工作< / a > < / li > < li > < a  href = "ch03-04-comments.html" > < strong > 3.4.< / strong >  注释< / a > < / li > < li > < a  href = "ch03-05-control-flow.html" > < strong > 3.5.< / strong >  控制流< / a > < / li > < / ul > < / li > < li > < a  href = "ch04-00-understanding-ownership.html" > < strong > 4.< / strong >  认识所有权< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch04-01-what-is-ownership.html" > < strong > 4.1.< / strong >  什么是所有权< / a > < / li > < li > < a  href = "ch04-02-references-and-borrowing.html" > < strong > 4.2.< / strong >  引用 &  借用< / a > < / li > < li > < a  href = "ch04-03-slices.html" > < strong > 4.3.< / strong >  Slices< / a > < / li > < / ul > < / li > < li > < a  href = "ch05-00-structs.html" > < strong > 5.< / strong >  结构体< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch05-01-method-syntax.html" > < strong > 5.1.< / strong >  方法语法< / a > < / li > < / ul > < / li > < li > < a  href = "ch06-00-enums.html" > < strong > 6.< / strong >  枚举和模式匹配< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch06-01-defining-an-enum.html" > < strong > 6.1.< / strong >  定义枚举< / a > < / li > < li > < a  href = "ch06-02-match.html" > < strong > 6.2.< / strong >  < code > match< / code > 控制流运算符< / a > < / li > < li > < a  href = "ch06-03-if-let.html" > < strong > 6.3.< / strong >  < code > if let< / code > 简单控制流< / a > < / li > < / ul > < / li > < li > < a  href = "ch07-00-modules.html" > < strong > 7.< / strong >  模块< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch07-01-mod-and-the-filesystem.html" > < strong > 7.1.< / strong >  < code > mod< / code > 和文件系统< / a > < / li > < li > < a  href = "ch07-02-controlling-visibility-with-pub.html" > < strong > 7.2.< / strong >  使用< code > pub< / code > 控制可见性< / a > < / li > < li > < a  href = "ch07-03-importing-names-with-use.html" > < strong > 7.3.< / strong >  使用< code > use< / code > 导入命名< / a > < / li > < / ul > < / li > < li > < a  href = "ch08-00-common-collections.html" > < strong > 8.< / strong >  通用集合类型< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch08-01-vectors.html" > < strong > 8.1.< / strong >  vector< / a > < / li > < li > < a  href = "ch08-02-strings.html" > < strong > 8.2.< / strong >  字符串< / a > < / li > < li > < a  href = "ch08-03-hash-maps.html" > < strong > 8.3.< / strong >  哈希 map< / a > < / li > < / ul > < / li > < li > < a  href = "ch09-00-error-handling.html" > < strong > 9.< / strong >  错误处理< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch09-01-unrecoverable-errors-with-panic.html" > < strong > 9.1.< / strong >  < code > panic!< / code > 与不可恢复的错误< / a > < / li > < li > < a  href = "ch09-02-recoverable-errors-with-result.html" > < strong > 9.2.< / strong >  < code > Result< / code > 与可恢复的错误< / a > < / li > < li > < a  href = "ch09-03-to-panic-or-not-to-panic.html" > < strong > 9.3.< / strong >  < code > panic!< / code > 还是不< code > panic!< / code > < / a > < / li > < / ul > < / li > < li > < a  href = "ch10-00-generics.html" > < strong > 10.< / strong >  泛型、trait 和生命周期< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch10-01-syntax.html" > < strong > 10.1.< / strong >  泛型数据类型< / a > < / li > < li > < a  href = "ch10-02-traits.html" > < strong > 10.2.< / strong >  trait: < / a > < / li > < li > < a  href = "ch10-03-lifetime-syntax.html" > < strong > 10.3.< / strong >  生命周期与引用有效性< / a > < / li > < / ul > < / li > < li > < a  href = "ch11-00-testing.html" > < strong > 11.< / strong >  测试< / a > < / li > < li > < ul  class = "section" > < li > < a  href = "ch11-01-writing-tests.html" > < strong > 11.1.< / strong >  编写测试< / a > < / li > < li > < a  href = "ch11-02-running-tests.html" > < strong > 11.2.< / strong >  运行测试< / a > < / li > < li > < a  href = "ch11-03-test-organization.html" > < strong > 11.3.< / strong >  测试的组织结构< / a > < / li > < / ul > < / li > < li > < a  href = "ch12-00-an-io-project.h 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < div  id = "page-wrapper"  class = "page-wrapper" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            < div  class = "page" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < div  id = "menu-bar"  class = "menu-bar" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < div  class = "left-buttons" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                        < i  id = "sidebar-toggle"  class = "fa fa-bars" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                        < i  id = "theme-toggle"  class = "fa fa-paint-brush" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < h1  class = "menu-title" > Rust 程序设计语言 简体中文版< / h1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < div  class = "right-buttons" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                        < i  id = "print-button"  class = "fa fa-print"  title = "Print this book" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < div  id = "content"  class = "content" > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								                    < a  class = "header"  href = "#性能"  name = "性能" > < h2 > 性能< / h2 > < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< blockquote >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > < a  href = "https://github.com/rust-lang/book/blob/master/second-edition/src/ch13-04-performance.md" > ch13-04-performance.md< / a >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< br >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								commit 4f2dc564851dc04b271a2260c834643dfd86c724< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / blockquote >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 哪一个版本的< code > grep< / code > 函数会更快一些呢:是直接使用< code > for< / code > 循环的版本还是使用迭代器的版本呢?我们将运行一个性能测试,通过将阿瑟·柯南·道尔的“福尔摩斯探案集”的全部内容加载进< code > String< / code > 并寻找其中的单词 " the" 。如下是< code > for< / code > 循环版本和迭代器版本的 grep 函数的性能测试结果:< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< pre > < code > test bench_grep_for  ... bench:  19,620,300 ns/iter (+/- 915,700) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								test bench_grep_iter ... bench:  19,234,900 ns/iter (+/- 657,200)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / code > < / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								< p > 结果迭代器版本还要稍微快一点!这里我们将不会查看性能测试的代码,光是这一点并不是为了证明他们是完全等同的,而是提供了一个大体上比较这两种实现的方向。对于< strong > 真正< / strong > 的性能测试,将会检查不同长度的文本、不同的搜索单词、不同长度的单词和所有其他的可变情况。这里所要表达的是:迭代器,作为一个高级的抽象,被编译成了与手写的底层代码大体一致性能代码。迭代器是 Rust 的< strong > 零成本抽象< / strong > ( < em > zero-cost abstractions< / em > ) , , , < strong > 零开销< / strong > ( < em > zero-overhead< / em > )如出一辙:< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< blockquote >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								< p > In general, C++ implementations obey the zero-overhead principle: What you don’ ’ ’ < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< li > Bjarne Stroustrup " Foundations of C++" < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								< p > 从整体来说, < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< li > 本贾尼·斯特劳斯特卢普 " Foundations of C++" < / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / ul >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / blockquote >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 作为另一个例子,这里有一些来自于音频解码器的代码。这些代码使用迭代器链来对作用域中的三个变量进行了某种数学计算:一个叫< code > buffer< / code > 的数据 slice、一个 12 个系数列表的< code > coefficients< / code > 、和一个移位位数的< code > qlp_shift< / code > 。例子中声明了这些变量但并没有提供任何值;虽然这些代码在其上下文之外没有什么意义,不过仍是一个简洁的现实中的例子,来展示 Rust 如何将高级概念转换为底层代码:< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< pre > < code  class = "language-rust,ignore" > let buffer: & mut [i32]; 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								let coefficients: [i64; 12];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								let qlp_shift: i16;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								for i in 12..buffer.len() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    let prediction = coefficients.iter()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                                 .zip(& buffer[i - 12..i])
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                                 .map(|(& c, & s)| c * s as i64)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                                 .sum::< i64> () > >  qlp_shift;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    let delta = buffer[i];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    buffer[i] = prediction as i32 + delta;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / code > < / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 为了计算< code > prediction< / code > 的值,这些代码遍历了< code > coefficients< / code > 中的 12 个值,使用< code > zip< / code > 方法将系数与< code > buffer< / code > 的前 12 个值组合在一起。接着将每一对值相乘,再将所有结果相加,然后将总和右移< code > qlp_shift< / code > 位。< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								< p > 像音频解码器这样的程序通常非常看重计算的性能。这里, , , < code > coefficients< / code > 的值完全用不到循环: < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 现在知道这些了,请放心大胆的使用迭代器和闭包吧!他们使得代码看起来更高级,但并不为此引入运行时性能损失。< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< a  class = "header"  href = "#总结"  name = "总结" > < h2 > 总结< / h2 > < / a >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 闭包和迭代器是 Rust 受函数式编程语言观念所启发的功能。他们对 Rust 直白的表达高级概念的能力有很大贡献。闭包和迭代器的实现,以及 Rust 的零成本抽象,也使得运行时性能不受影响。< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< p > 现在我们改进了我们 I/O 项目的(代码)表现力,让我们看一看更多< code > cargo< / code > 的功能,他们是如何将项目准备好分享给世界的。< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                <!--  Mobile navigation buttons  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < a  href = "ch13-03-improving-our-io-project.html"  class = "mobile-nav-chapters previous" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                        < i  class = "fa fa-angle-left" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								                    < a  href = "ch14-00-more-about-cargo.html"  class = "mobile-nav-chapters next" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                        < i  class = "fa fa-angle-right" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < a  href = "ch13-03-improving-our-io-project.html"  class = "nav-chapters previous"  title = "You can navigate through the chapters using the arrow keys" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < i  class = "fa fa-angle-left" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								                < a  href = "ch14-00-more-about-cargo.html"  class = "nav-chapters next"  title = "You can navigate through the chapters using the arrow keys" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                    < i  class = "fa fa-angle-right" > < / i > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                < / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Local fallback for Font Awesome  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            if ($(".fa").css("font-family") !== "FontAwesome") {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								                $('< link  rel = "stylesheet"  type = "text/css"  href = "_FontAwesome/css/font-awesome.css" > ').prependTo('head');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        <!--  Livereload script (if served using the cli tool)  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  src = "highlight.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        < script  src = "book.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    < / body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								< / html >