rCore-Tutorial-v3/ch6/zero/index.html
2022-05-03 12:09:53 +00:00

41 lines
9.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Functions for reading binary data into Rust data structures. All functions are zero-allocation."><meta name="keywords" content="rust, rustlang, rust-lang, zero"><title>zero - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
<noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../zero/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"></h2>
</nav>
<nav class="sidebar"><a class="sidebar-logo" href="../zero/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"><a href="#">Crate zero</a></h2><div class="sidebar-elems"><div class="block"><ul><li class="version">Version 0.1.2</li><li><a id="all-types" href="all.html">All Items</a></li></div></ul><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div></section><div id="sidebar-vars" data-name="zero" data-ty="mod" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../zero/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
<h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">zero</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/zero/lib.rs.html#9-311">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Functions for reading binary data into Rust data structures. All functions
are zero-allocation.</p>
<p>There are functions for reading a single value, an array of values, a single
null-terminated utf8 string (which should also work with ascii strings), and
an array of null-terminated strings terminated by another null byte.</p>
<p>Functions preserve the lifetime of the underlying data. These functions are
memory safe, although this is in part based on the assumption that the
client only implements the unsafe trait <code>Pod</code> where safe to do so.</p>
<p>Functions assert that the provided data is large enough. The string
functions check that strings are valid utf8. There is no checking that the
the privided input will produce a valid object (for example, an enum has a
valid discriminant). The user must assert this by implementing the trait
<code>Pod</code>.</p>
<p>There are also unsafe versions of most functions which do not require the
return type to implement <code>Pod</code> and which do no checking.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.StrReaderIterator.html" title="zero::StrReaderIterator struct">StrReaderIterator</a></div><div class="item-right docblock-short"><p>Iterates over <code>self.data</code>, yielding strings (null-terminated in <code>self.data</code>).
See <code>read_strs_to_null</code>.</p>
</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Pod.html" title="zero::Pod trait">Pod</a></div><div class="item-right docblock-short"><p>Implementing this trait means that the concrete type is plain old data (POD).
Precisely, by implementing <code>Pod</code> the programmer asserts that it is safe to
read the type from binary slices provided to <code>read</code>, etc.</p>
</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read.html" title="zero::read fn">read</a></div><div class="item-right docblock-short"><p>Reads a single <code>T</code> from <code>input</code>.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_array.html" title="zero::read_array fn">read_array</a></div><div class="item-right docblock-short"><p>Read an array of <code>T</code>s from input.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_array_unsafe.html" title="zero::read_array_unsafe fn">read_array_unsafe</a><a title="unsafe function" href="#"><sup></sup></a></div><div class="item-right docblock-short"><p>Reads an array of <code>T</code>s from <code>input</code> with no checks.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_str.html" title="zero::read_str fn">read_str</a></div><div class="item-right docblock-short"><p>Read a string from <code>input</code>. The string must be a null-termianted utf8 string.
Note that an ascii C string fulfils this requirement.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_str_unsafe.html" title="zero::read_str_unsafe fn">read_str_unsafe</a><a title="unsafe function" href="#"><sup></sup></a></div><div class="item-right docblock-short"><p>Reads a null-terminated string from <code>input</code> with no checks.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_strs_to_null.html" title="zero::read_strs_to_null fn">read_strs_to_null</a></div><div class="item-right docblock-short"><p>Returns an iterator which will return a sequence of strings from <code>input</code>.
Each string must be a null-terminated utf8 string. The sequence of strings
is terminated either by a second null byte, or the end of input.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.read_unsafe.html" title="zero::read_unsafe fn">read_unsafe</a><a title="unsafe function" href="#"><sup></sup></a></div><div class="item-right docblock-short"><p>Reads a <code>T</code> from <code>input</code> with no checks.</p>
</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="zero" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.62.0-nightly (1f7fb6413 2022-04-10)" ></div>
</body></html>