Update documentation.

This commit is contained in:
Romain Ruetschi
2016-11-18 13:23:26 +01:00
parent 995a67f985
commit 444fbec6b1
40 changed files with 132 additions and 747 deletions

View File

@ -1,10 +0,0 @@
(function() {var implementors = {};
implementors["merkle"] = ["impl&lt;T:&nbsp;<a class='trait' href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html' title='core::cmp::PartialEq'>PartialEq</a>&gt; <a class='trait' href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html' title='core::cmp::PartialEq'>PartialEq</a> for <a class='enum' href='merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;T&gt;",];
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()

View File

@ -1,10 +0,0 @@
(function() {var implementors = {};
implementors["merkle"] = [];
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()

View File

@ -26,7 +26,7 @@ h1.fqn {
h2, h3:not(.impl):not(.method):not(.type):not(.tymethod), h4:not(.method):not(.type):not(.tymethod) { h2, h3:not(.impl):not(.method):not(.type):not(.tymethod), h4:not(.method):not(.type):not(.tymethod) {
border-bottom-color: #DDDDDD; border-bottom-color: #DDDDDD;
} }
.in-band { .in-band, code {
background-color: white; background-color: white;
} }
@ -34,7 +34,7 @@ div.stability > em > code {
background-color: initial; background-color: initial;
} }
.docblock code, .docblock-short code { .docblock code {
background-color: #F5F5F5; background-color: #F5F5F5;
} }
pre { pre {
@ -107,13 +107,13 @@ nav.main .current {
border-bottom-color: #000; border-bottom-color: #000;
} }
nav.main .separator { nav.main .separator {
border: 1px solid #000; border-color: 1px solid #000;
} }
a { a {
color: #000; color: #000;
} }
.docblock a, .docblock-short a, .stability a { .docblock a, .stability a {
color: #3873AD; color: #3873AD;
} }

View File

@ -34,8 +34,7 @@
"primitive", "primitive",
"associatedtype", "associatedtype",
"constant", "constant",
"associatedconstant", "associatedconstant"];
"union"];
// used for special search precedence // used for special search precedence
var TY_PRIMITIVE = itemTypes.indexOf("primitive"); var TY_PRIMITIVE = itemTypes.indexOf("primitive");
@ -578,6 +577,10 @@
displayPath = item.path + '::'; displayPath = item.path + '::';
href = rootPath + item.path.replace(/::/g, '/') + '/' + href = rootPath + item.path.replace(/::/g, '/') + '/' +
name + '/index.html'; name + '/index.html';
} else if (type === 'static' || type === 'reexport') {
displayPath = item.path + '::';
href = rootPath + item.path.replace(/::/g, '/') +
'/index.html';
} else if (type === "primitive") { } else if (type === "primitive") {
displayPath = ""; displayPath = "";
href = rootPath + item.path.replace(/::/g, '/') + href = rootPath + item.path.replace(/::/g, '/') +
@ -588,14 +591,9 @@
} else if (item.parent !== undefined) { } else if (item.parent !== undefined) {
var myparent = item.parent; var myparent = item.parent;
var anchor = '#' + type + '.' + name; var anchor = '#' + type + '.' + name;
var parentType = itemTypes[myparent.ty]; displayPath = item.path + '::' + myparent.name + '::';
if (parentType === "primitive") {
displayPath = myparent.name + '::';
} else {
displayPath = item.path + '::' + myparent.name + '::';
}
href = rootPath + item.path.replace(/::/g, '/') + href = rootPath + item.path.replace(/::/g, '/') +
'/' + parentType + '/' + itemTypes[myparent.ty] +
'.' + myparent.name + '.' + myparent.name +
'.html' + anchor; '.html' + anchor;
} else { } else {

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=trait.MerkleDigest.html">
</head>
<body>
<p>Redirecting to <a href="trait.MerkleDigest.html">trait.MerkleDigest.html</a>...</p>
<script>location.replace("trait.MerkleDigest.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.MerkleTree.html">
</head>
<body>
<p>Redirecting to <a href="struct.MerkleTree.html">struct.MerkleTree.html</a>...</p>
<script>location.replace("struct.MerkleTree.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=enum.Positioned.html">
</head>
<body>
<p>Redirecting to <a href="enum.Positioned.html">enum.Positioned.html</a>...</p>
<script>location.replace("enum.Positioned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.Proof.html">
</head>
<body>
<p>Redirecting to <a href="struct.Proof.html">struct.Proof.html</a>...</p>
<script>location.replace("struct.Proof.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="struct.ProofBlock.html">struct.ProofBlock.html</a>...</p>
<script>location.replace("struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,126 +0,0 @@
<!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="API documentation for the Rust `Positioned` enum in crate `merkle`.">
<meta name="keywords" content="rust, rustlang, rust-lang, Positioned">
<title>merkle::Positioned - Rust</title>
<link rel="stylesheet" type="text/css" href="../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../main.css">
</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<p class='location'><a href='index.html'>merkle</a></p><script>window.sidebarCurrent = {name: 'Positioned', ty: 'enum', relpath: ''};</script><script defer src="sidebar-items.js"></script>
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content enum">
<h1 class='fqn'><span class='in-band'>Enum <a href='index.html'>merkle</a>::<wbr><a class='enum' href=''>Positioned</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a id='src-158' class='srclink' href='../src/merkle/src/proof.rs.html#121-131' title='goto source code'>[src]</a></span></h1>
<pre class='rust enum'>pub enum Positioned&lt;T&gt; {
Nowhere,
Left(T),
Right(T),
}</pre><div class='docblock'><p>Tags a value so that we know from in branch (if any) it was found.</p>
</div><h2 class='variants'>Variants</h2>
<span id='variant.Nowhere' class='variant'><span id='Nowhere.v' class='invisible'><code>Nowhere</code></span></span><div class='docblock'><p>No value was found</p>
</div><span id='variant.Left' class='variant'><span id='Left.v' class='invisible'><code>Left(T)</code></span></span><div class='docblock'><p>The value was found in the left branch</p>
</div><span id='variant.Right' class='variant'><span id='Right.v' class='invisible'><code>Right(T)</code></span></span><div class='docblock'><p>The value was found in the right branch</p>
</div><h2 id='implementations'>Trait Implementations</h2><h3 class='impl'><span class='in-band'><code>impl&lt;T:&nbsp;<a class='trait' href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html' title='core::cmp::PartialEq'>PartialEq</a>&gt; <a class='trait' href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html' title='core::cmp::PartialEq'>PartialEq</a> for <a class='enum' href='../merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a id='src-165' class='srclink' href='../src/merkle/src/proof.rs.html#120' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.eq' class='method'><span id='eq.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq' class='fnname'>eq</a>(&amp;self, __arg_0: &amp;<a class='enum' href='../merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;T&gt;) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></span></h4>
<div class='docblock'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
</div><h4 id='method.ne' class='method'><span id='ne.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne' class='fnname'>ne</a>(&amp;self, __arg_0: &amp;<a class='enum' href='../merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;T&gt;) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></span></h4>
<div class='docblock'><p>This method tests for <code>!=</code>.</p>
</div></div></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>&larrb;</dt>
<dd>Move up in search results</dd>
<dt>&rarrb;</dt>
<dd>Move down in search results</dd>
<dt>&#9166;</dt>
<dd>Go to active search result</dd>
<dt>+</dt>
<dd>Collapse/expand all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../";
window.currentCrate = "merkle";
</script>
<script src="../jquery.js"></script>
<script src="../main.js"></script>
<script defer src="../search-index.js"></script>
</body>
</html>

View File

@ -47,14 +47,14 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>] [<span class='inner'>&#x2212;</span>]
</a> </a>
</span><a id='src-0' class='srclink' href='../src/merkle/src/lib.rs.html#2-18' title='goto source code'>[src]</a></span></h1> </span><a id='src-0' class='srclink' href='../src/merkle/src/lib.rs.html#2-17' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><p><em>merkle</em> implements a Merkle Tree in Rust.</p> <div class='docblock'><p><em>merkle</em> implements a Merkle Tree in Rust.</p>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2> </div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table> <table>
<tr class=' module-item'> <tr class=' module-item'>
<td><a class='struct' href='struct.MerkleTree.html' <td><a class='struct' href='struct.MerkleTree.html'
title='merkle::MerkleTree'>MerkleTree</a></td> title='merkle::MerkleTree'>MerkleTree</a></td>
<td class='docblock-short'> <td class='docblock short'>
<p>A Merkle tree is a binary tree, with values of type <code>T</code> at the leafs, <p>A Merkle tree is a binary tree, with values of type <code>T</code> at the leafs,
and where every node holds the hash of the concatenation of the hashes of and where every node holds the hash of the concatenation of the hashes of
its children nodes.</p> its children nodes.</p>
@ -63,36 +63,9 @@ its children nodes.</p>
<tr class=' module-item'> <tr class=' module-item'>
<td><a class='struct' href='struct.Proof.html' <td><a class='struct' href='struct.Proof.html'
title='merkle::Proof'>Proof</a></td> title='merkle::Proof'>Proof</a></td>
<td class='docblock-short'> <td class='docblock short'>
<p>An inclusion proof represent the fact that <code>value</code> is a member of a <code>MerkleTree</code> <p>An inclusion proof represent the fact that a <code>value</code> is a member
with root hash <code>root_hash</code>, and hash function <code>digest</code>. of a <code>MerkleTree</code> with root hash <code>root_hash</code>, and hash function <code>digest</code>.</p>
A proof is a linked-list of <code>ProofBlock</code>s.
TODO: Represent a proof as a vector of ProofBlock instead of a linked-list?</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class='struct' href='struct.ProofBlock.html'
title='merkle::ProofBlock'>ProofBlock</a></td>
<td class='docblock-short'>
<p>A <code>ProofBlock</code> is a linked-list holding the hash of the node, the hash of its sibling node,
and the rest of the inclusion proof.</p>
</td>
</tr></table><h2 id='enums' class='section-header'><a href="#enums">Enums</a></h2>
<table>
<tr class=' module-item'>
<td><a class='enum' href='enum.Positioned.html'
title='merkle::Positioned'>Positioned</a></td>
<td class='docblock-short'>
<p>Tags a value so that we know from in branch (if any) it was found.</p>
</td>
</tr></table><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
<table>
<tr class=' module-item'>
<td><a class='trait' href='trait.MerkleDigest.html'
title='merkle::MerkleDigest'>MerkleDigest</a></td>
<td class='docblock-short'>
<p>The sole purpose of this trait is to extend the standard
<code>crypto::digest::Digest</code> with a couple utility functions.</p>
</td> </td>
</tr></table></section> </tr></table></section>
<section id='search' class="content hidden"></section> <section id='search' class="content hidden"></section>
@ -150,9 +123,11 @@ and the rest of the inclusion proof.</p>
<script> <script>
window.rootPath = "../"; window.rootPath = "../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../jquery.js"></script> <script src="../jquery.js"></script>
<script src="../main.js"></script> <script src="../main.js"></script>
<script defer src="../search-index.js"></script> <script defer src="../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=trait.MerkleDigest.html">
</head>
<body>
<p>Redirecting to <a href="trait.MerkleDigest.html">trait.MerkleDigest.html</a>...</p>
<script>location.replace("trait.MerkleDigest.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/trait.MerkleDigest.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/trait.MerkleDigest.html">../../merkle/trait.MerkleDigest.html</a>...</p>
<script>location.replace("../../merkle/trait.MerkleDigest.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.MerkleTree.html">
</head>
<body>
<p>Redirecting to <a href="struct.MerkleTree.html">struct.MerkleTree.html</a>...</p>
<script>location.replace("struct.MerkleTree.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.Proof.html">
</head>
<body>
<p>Redirecting to <a href="struct.Proof.html">struct.Proof.html</a>...</p>
<script>location.replace("struct.Proof.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="struct.ProofBlock.html">struct.ProofBlock.html</a>...</p>
<script>location.replace("struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/struct.ProofBlock.html">../../merkle/struct.ProofBlock.html</a>...</p>
<script>location.replace("../../merkle/struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=enum.Positioned.html">
</head>
<body>
<p>Redirecting to <a href="enum.Positioned.html">enum.Positioned.html</a>...</p>
<script>location.replace("enum.Positioned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.Proof.html">
</head>
<body>
<p>Redirecting to <a href="struct.Proof.html">struct.Proof.html</a>...</p>
<script>location.replace("struct.Proof.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="struct.ProofBlock.html">struct.ProofBlock.html</a>...</p>
<script>location.replace("struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/enum.Positioned.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/enum.Positioned.html">../../merkle/enum.Positioned.html</a>...</p>
<script>location.replace("../../merkle/enum.Positioned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/struct.ProofBlock.html">../../merkle/struct.ProofBlock.html</a>...</p>
<script>location.replace("../../merkle/struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1 +1 @@
initSidebarItems({"enum":[["Positioned","Tags a value so that we know from in branch (if any) it was found."]],"struct":[["MerkleTree","A Merkle tree is a binary tree, with values of type `T` at the leafs, and where every node holds the hash of the concatenation of the hashes of its children nodes."],["Proof","An inclusion proof represent the fact that `value` is a member of a `MerkleTree` with root hash `root_hash`, and hash function `digest`. A proof is a linked-list of `ProofBlock`s. TODO: Represent a proof as a vector of ProofBlock instead of a linked-list?"],["ProofBlock","A `ProofBlock` is a linked-list holding the hash of the node, the hash of its sibling node, and the rest of the inclusion proof."]],"trait":[["MerkleDigest","The sole purpose of this trait is to extend the standard `crypto::digest::Digest` with a couple utility functions."]]}); initSidebarItems({"struct":[["MerkleTree","A Merkle tree is a binary tree, with values of type `T` at the leafs, and where every node holds the hash of the concatenation of the hashes of its children nodes."],["Proof","An inclusion proof represent the fact that a `value` is a member of a `MerkleTree` with root hash `root_hash`, and hash function `digest`."]]});

View File

@ -48,7 +48,7 @@
[<span class='inner'>&#x2212;</span>] [<span class='inner'>&#x2212;</span>]
</a> </a>
</span><a id='src-10' class='srclink' href='../src/merkle/src/merkletree.rs.html#14-26' title='goto source code'>[src]</a></span></h1> </span><a id='src-10' class='srclink' href='../src/merkle/src/merkletree.rs.html#14-26' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct MerkleTree&lt;D, T&gt; { <pre class='rust struct'>pub struct MerkleTree&lt;D,&nbsp;T&gt; {
pub digest: D, pub digest: D,
pub tree: Tree&lt;T&gt;, pub tree: Tree&lt;T&gt;,
pub height: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a>, pub height: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a>,
@ -56,28 +56,20 @@
}</pre><div class='docblock'><p>A Merkle tree is a binary tree, with values of type <code>T</code> at the leafs, }</pre><div class='docblock'><p>A Merkle tree is a binary tree, with values of type <code>T</code> at the leafs,
and where every node holds the hash of the concatenation of the hashes of and where every node holds the hash of the concatenation of the hashes of
its children nodes.</p> its children nodes.</p>
</div><h2 class='fields'>Fields</h2><span id='structfield.digest' class='structfield'> </div><h2 class='fields'>Fields</h2><span id='structfield.digest' class='structfield'><code>digest: D</code>
<span id='digest.v' class='invisible'> </span><span class='stab '></span><div class='docblock'><p>The hashing function used by this Merkle tree</p>
<code>digest: D</code> </div><span id='structfield.tree' class='structfield'><code>tree: Tree&lt;T&gt;</code>
</span></span><span class='stab '></span><div class='docblock'><p>The hashing function used by this Merkle tree</p> </span><span class='stab '></span><div class='docblock'><p>The inner binary tree</p>
</div><span id='structfield.tree' class='structfield'> </div><span id='structfield.height' class='structfield'><code>height: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a></code>
<span id='tree.v' class='invisible'> </span><span class='stab '></span><div class='docblock'><p>The height of the tree</p>
<code>tree: Tree&lt;T&gt;</code> </div><span id='structfield.count' class='structfield'><code>count: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a></code>
</span></span><span class='stab '></span><div class='docblock'><p>The inner binary tree</p> </span><span class='stab '></span><div class='docblock'><p>The number of leaf nodes in the tree</p>
</div><span id='structfield.height' class='structfield'> </div><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl&lt;D,&nbsp;T&gt; <a class='struct' href='../merkle/struct.MerkleTree.html' title='merkle::MerkleTree'>MerkleTree</a>&lt;D,&nbsp;T&gt; <span class='where'>where D: Digest + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a>, T: <a class='trait' href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html' title='core::convert::Into'>Into</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt; + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a></span></code></span><span class='out-of-band'><div class='ghost'></div><a id='src-17' class='srclink' href='../src/merkle/src/merkletree.rs.html#28-109' title='goto source code'>[src]</a></span></h3>
<span id='height.v' class='invisible'> <div class='impl-items'><h4 id='method.from_vec' class='method'><code>fn <a href='#method.from_vec' class='fnname'>from_vec</a>(digest: D, values: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;T&gt;) -&gt; Self</code></h4>
<code>height: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a></code>
</span></span><span class='stab '></span><div class='docblock'><p>The height of the tree</p>
</div><span id='structfield.count' class='structfield'>
<span id='count.v' class='invisible'>
<code>count: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a></code>
</span></span><span class='stab '></span><div class='docblock'><p>The number of leaf nodes in the tree</p>
</div><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl&lt;D, T&gt; <a class='struct' href='../merkle/struct.MerkleTree.html' title='merkle::MerkleTree'>MerkleTree</a>&lt;D, T&gt; <span class='where'>where D: Digest + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a>, T: <a class='trait' href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html' title='core::convert::Into'>Into</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt; + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a></span></code></span><span class='out-of-band'><div class='ghost'></div><a id='src-17' class='srclink' href='../src/merkle/src/merkletree.rs.html#28-109' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.from_vec' class='method'><span id='from_vec.v' class='invisible'><code>fn <a href='#method.from_vec' class='fnname'>from_vec</a>(digest: D, values: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;T&gt;) -&gt; Self</code></span></h4>
<div class='docblock'><p>Constructs a Merkle Tree from a vector of data blocks</p> <div class='docblock'><p>Constructs a Merkle Tree from a vector of data blocks</p>
</div><h4 id='method.root_hash' class='method'><span id='root_hash.v' class='invisible'><code>fn <a href='#method.root_hash' class='fnname'>root_hash</a>(&amp;self) -&gt; &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code></span></h4> </div><h4 id='method.root_hash' class='method'><code>fn <a href='#method.root_hash' class='fnname'>root_hash</a>(&amp;self) -&gt; &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code></h4>
<div class='docblock'><p>Returns the tree&#39;s root hash</p> <div class='docblock'><p>Returns the tree&#39;s root hash</p>
</div><h4 id='method.gen_proof' class='method'><span id='gen_proof.v' class='invisible'><code>fn <a href='#method.gen_proof' class='fnname'>gen_proof</a>(&amp;self, value: &amp;T) -&gt; <a class='enum' href='https://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a>&lt;<a class='struct' href='../merkle/struct.Proof.html' title='merkle::Proof'>Proof</a>&lt;D, T&gt;&gt;</code></span></h4> </div><h4 id='method.gen_proof' class='method'><code>fn <a href='#method.gen_proof' class='fnname'>gen_proof</a>(&amp;self, value: &amp;T) -&gt; <a class='enum' href='https://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a>&lt;<a class='struct' href='../merkle/struct.Proof.html' title='merkle::Proof'>Proof</a>&lt;D,&nbsp;T&gt;&gt;</code></h4>
<div class='docblock'><p>Generate an inclusion proof for the given value. <div class='docblock'><p>Generate an inclusion proof for the given value.
<code>None</code> is returned if the given value is not found in the tree.</p> <code>None</code> is returned if the given value is not found in the tree.</p>
</div></div></section> </div></div></section>
@ -136,9 +128,11 @@ its children nodes.</p>
<script> <script>
window.rootPath = "../"; window.rootPath = "../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../jquery.js"></script> <script src="../jquery.js"></script>
<script src="../main.js"></script> <script src="../main.js"></script>
<script defer src="../search-index.js"></script> <script defer src="../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -47,31 +47,21 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>] [<span class='inner'>&#x2212;</span>]
</a> </a>
</span><a id='src-48' class='srclink' href='../src/merkle/src/proof.rs.html#11-16' title='goto source code'>[src]</a></span></h1> </span><a id='src-50' class='srclink' href='../src/merkle/src/proof.rs.html#9-14' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct Proof&lt;D, T&gt; { <pre class='rust struct'>pub struct Proof&lt;D,&nbsp;T&gt; {
pub digest: D, pub digest: D,
pub root_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;, pub root_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;,
pub block: <a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a>, pub block: ProofBlock,
pub value: T, pub value: T,
}</pre><div class='docblock'><p>An inclusion proof represent the fact that <code>value</code> is a member of a <code>MerkleTree</code> }</pre><div class='docblock'><p>An inclusion proof represent the fact that a <code>value</code> is a member
with root hash <code>root_hash</code>, and hash function <code>digest</code>. of a <code>MerkleTree</code> with root hash <code>root_hash</code>, and hash function <code>digest</code>.</p>
A proof is a linked-list of <code>ProofBlock</code>s. </div><h2 class='fields'>Fields</h2><span id='structfield.digest' class='structfield'><code>digest: D</code>
TODO: Represent a proof as a vector of ProofBlock instead of a linked-list?</p> </span><span class='stab '></span><span id='structfield.root_hash' class='structfield'><code>root_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code>
</div><h2 class='fields'>Fields</h2><span id='structfield.digest' class='structfield'> </span><span class='stab '></span><span id='structfield.block' class='structfield'><code>block: ProofBlock</code>
<span id='digest.v' class='invisible'> </span><span class='stab '></span><span id='structfield.value' class='structfield'><code>value: T</code>
<code>digest: D</code> </span><span class='stab '></span><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl&lt;D,&nbsp;T&gt; <a class='struct' href='../merkle/struct.Proof.html' title='merkle::Proof'>Proof</a>&lt;D,&nbsp;T&gt; <span class='where'>where D: Digest + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a>, T: <a class='trait' href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html' title='core::convert::Into'>Into</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt; + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a></span></code></span><span class='out-of-band'><div class='ghost'></div><a id='src-57' class='srclink' href='../src/merkle/src/proof.rs.html#16-51' title='goto source code'>[src]</a></span></h3>
</span></span><span class='stab '></span><span id='structfield.root_hash' class='structfield'> <div class='impl-items'><h4 id='method.validate' class='method'><code>fn <a href='#method.validate' class='fnname'>validate</a>(&amp;self, root_hash: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></h4>
<span id='root_hash.v' class='invisible'> <h4 id='method.validate_block' class='method'><code>fn <a href='#method.validate_block' class='fnname'>validate_block</a>(&amp;self, block: &amp;ProofBlock, digest: &amp;mut D) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></h4>
<code>root_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code>
</span></span><span class='stab '></span><span id='structfield.block' class='structfield'>
<span id='block.v' class='invisible'>
<code>block: <a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a></code>
</span></span><span class='stab '></span><span id='structfield.value' class='structfield'>
<span id='value.v' class='invisible'>
<code>value: T</code>
</span></span><span class='stab '></span><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl&lt;D, T&gt; <a class='struct' href='../merkle/struct.Proof.html' title='merkle::Proof'>Proof</a>&lt;D, T&gt; <span class='where'>where D: Digest + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a>, T: <a class='trait' href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html' title='core::convert::Into'>Into</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt; + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a></span></code></span><span class='out-of-band'><div class='ghost'></div><a id='src-55' class='srclink' href='../src/merkle/src/proof.rs.html#18-53' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.validate' class='method'><span id='validate.v' class='invisible'><code>fn <a href='#method.validate' class='fnname'>validate</a>(&amp;self, root_hash: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></span></h4>
<h4 id='method.validate_block' class='method'><span id='validate_block.v' class='invisible'><code>fn <a href='#method.validate_block' class='fnname'>validate_block</a>(&amp;self, block: &amp;<a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a>, digest: &amp;mut D) -&gt; <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></span></h4>
</div></section> </div></section>
<section id='search' class="content hidden"></section> <section id='search' class="content hidden"></section>
@ -128,9 +118,11 @@ TODO: Represent a proof as a vector of ProofBlock instead of a linked-list?</p>
<script> <script>
window.rootPath = "../"; window.rootPath = "../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../jquery.js"></script> <script src="../jquery.js"></script>
<script src="../main.js"></script> <script src="../main.js"></script>
<script defer src="../search-index.js"></script> <script defer src="../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -1,130 +0,0 @@
<!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="API documentation for the Rust `ProofBlock` struct in crate `merkle`.">
<meta name="keywords" content="rust, rustlang, rust-lang, ProofBlock">
<title>merkle::ProofBlock - Rust</title>
<link rel="stylesheet" type="text/css" href="../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../main.css">
</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<p class='location'><a href='index.html'>merkle</a></p><script>window.sidebarCurrent = {name: 'ProofBlock', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script>
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content struct">
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>merkle</a>::<wbr><a class='struct' href=''>ProofBlock</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a id='src-71' class='srclink' href='../src/merkle/src/proof.rs.html#58-62' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct ProofBlock {
pub node_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;,
pub sibling_hash: <a class='enum' href='../merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt;,
pub sub_proof: <a class='enum' href='https://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html' title='alloc::boxed::Box'>Box</a>&lt;<a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a>&gt;&gt;,
}</pre><div class='docblock'><p>A <code>ProofBlock</code> is a linked-list holding the hash of the node, the hash of its sibling node,
and the rest of the inclusion proof.</p>
</div><h2 class='fields'>Fields</h2><span id='structfield.node_hash' class='structfield'>
<span id='node_hash.v' class='invisible'>
<code>node_hash: <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code>
</span></span><span class='stab '></span><span id='structfield.sibling_hash' class='structfield'>
<span id='sibling_hash.v' class='invisible'>
<code>sibling_hash: <a class='enum' href='../merkle/enum.Positioned.html' title='merkle::Positioned'>Positioned</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt;</code>
</span></span><span class='stab '></span><span id='structfield.sub_proof' class='structfield'>
<span id='sub_proof.v' class='invisible'>
<code>sub_proof: <a class='enum' href='https://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html' title='alloc::boxed::Box'>Box</a>&lt;<a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a>&gt;&gt;</code>
</span></span><span class='stab '></span><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl <a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a></code></span><span class='out-of-band'><div class='ghost'></div><a id='src-75' class='srclink' href='../src/merkle/src/proof.rs.html#64-117' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.new' class='method'><span id='new.v' class='invisible'><code>fn <a href='#method.new' class='fnname'>new</a>&lt;T&gt;(tree: &amp;Tree&lt;T&gt;, needle: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='enum' href='https://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a>&lt;<a class='struct' href='../merkle/struct.ProofBlock.html' title='merkle::ProofBlock'>ProofBlock</a>&gt; <span class='where'>where T: <a class='trait' href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html' title='core::convert::Into'>Into</a>&lt;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;&gt; + <a class='trait' href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html' title='core::clone::Clone'>Clone</a></span></code></span></h4>
<div class='docblock'><p>Attempt to generate a proof that the hash <code>needle</code> is a member of the given <code>tree</code>.</p>
</div></div></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>&larrb;</dt>
<dd>Move up in search results</dd>
<dt>&rarrb;</dt>
<dd>Move down in search results</dd>
<dt>&#9166;</dt>
<dd>Go to active search result</dd>
<dt>+</dt>
<dd>Collapse/expand all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../";
window.currentCrate = "merkle";
</script>
<script src="../jquery.js"></script>
<script src="../main.js"></script>
<script defer src="../search-index.js"></script>
</body>
</html>

View File

@ -1,128 +0,0 @@
<!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="API documentation for the Rust `MerkleDigest` trait in crate `merkle`.">
<meta name="keywords" content="rust, rustlang, rust-lang, MerkleDigest">
<title>merkle::MerkleDigest - Rust</title>
<link rel="stylesheet" type="text/css" href="../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../main.css">
</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<p class='location'><a href='index.html'>merkle</a></p><script>window.sidebarCurrent = {name: 'MerkleDigest', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script>
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content trait">
<h1 class='fqn'><span class='in-band'>Trait <a href='index.html'>merkle</a>::<wbr><a class='trait' href=''>MerkleDigest</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a id='src-109' class='srclink' href='../src/merkle/src/merkledigest.rs.html#5-12' title='goto source code'>[src]</a></span></h1>
<pre class='rust trait'>pub trait MerkleDigest {
fn <a href='#tymethod.hash_bytes' class='fnname'>hash_bytes</a>(&amp;mut self, bytes: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;;
fn <a href='#tymethod.combine_hashes' class='fnname'>combine_hashes</a>(&amp;mut self, left: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;, right: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;;
}</pre><div class='docblock'><p>The sole purpose of this trait is to extend the standard
<code>crypto::digest::Digest</code> with a couple utility functions.</p>
</div>
<h2 id='required-methods'>Required Methods</h2>
<div class='methods'>
<h3 id='tymethod.hash_bytes' class='method stab '><span id='hash_bytes.v' class='invisible'><code>fn <a href='#tymethod.hash_bytes' class='fnname'>hash_bytes</a>(&amp;mut self, bytes: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code></span></h3><div class='docblock'><p>Compute the hash the given byte array</p>
</div><h3 id='tymethod.combine_hashes' class='method stab '><span id='combine_hashes.v' class='invisible'><code>fn <a href='#tymethod.combine_hashes' class='fnname'>combine_hashes</a>(&amp;mut self, left: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;, right: &amp;<a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;) -&gt; <a class='struct' href='https://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a>&lt;<a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>&gt;</code></span></h3><div class='docblock'><p>Compute the hash of the concatenation of <code>left</code> and <code>right</code></p>
</div></div>
<h2 id='implementors'>Implementors</h2>
<ul class='item-list' id='implementors-list'>
<li><code>impl&lt;D&gt; MerkleDigest for D <span class='where'>where D: Digest</span></code></li>
</ul><script type="text/javascript" async
src="../implementors/merkle/trait.MerkleDigest.js">
</script></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>&larrb;</dt>
<dd>Move up in search results</dd>
<dt>&rarrb;</dt>
<dd>Move down in search results</dd>
<dt>&#9166;</dt>
<dd>Go to active search result</dd>
<dt>+</dt>
<dd>Collapse/expand all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../";
window.currentCrate = "merkle";
</script>
<script src="../jquery.js"></script>
<script src="../main.js"></script>
<script defer src="../search-index.js"></script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=enum.Positioned.html">
</head>
<body>
<p>Redirecting to <a href="enum.Positioned.html">enum.Positioned.html</a>...</p>
<script>location.replace("enum.Positioned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.Proof.html">
</head>
<body>
<p>Redirecting to <a href="struct.Proof.html">struct.Proof.html</a>...</p>
<script>location.replace("struct.Proof.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="struct.ProofBlock.html">struct.ProofBlock.html</a>...</p>
<script>location.replace("struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/enum.Positioned.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/enum.Positioned.html">../../merkle/enum.Positioned.html</a>...</p>
<script>location.replace("../../merkle/enum.Positioned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../merkle/struct.ProofBlock.html">
</head>
<body>
<p>Redirecting to <a href="../../merkle/struct.ProofBlock.html">../../merkle/struct.ProofBlock.html</a>...</p>
<script>location.replace("../../merkle/struct.ProofBlock.html" + location.search + location.hash);</script>
</body>
</html>

56
docs/playpen.js Normal file
View File

@ -0,0 +1,56 @@
// Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
/*jslint browser: true, es5: true */
/*globals $: true, rootPath: true */
document.addEventListener('DOMContentLoaded', function() {
'use strict';
if (!window.playgroundUrl) {
return;
}
var featureRegexp = new RegExp('^\s*#!\\[feature\\(\.*?\\)\\]');
var elements = document.querySelectorAll('pre.rust-example-rendered');
Array.prototype.forEach.call(elements, function(el) {
el.onmouseover = function(e) {
if (el.contains(e.relatedTarget)) {
return;
}
var a = document.createElement('a');
a.setAttribute('class', 'test-arrow');
a.textContent = 'Run';
var code = el.previousElementSibling.textContent;
var channel = '';
if (featureRegexp.test(code)) {
channel = '&version=nightly';
}
a.setAttribute('href', window.playgroundUrl + '?code=' +
encodeURIComponent(code) + channel);
a.setAttribute('target', '_blank');
el.appendChild(a);
};
el.onmouseout = function(e) {
if (el.contains(e.relatedTarget)) {
return;
}
el.removeChild(el.querySelectorAll('a.test-arrow')[0]);
};
});
});

View File

@ -1,5 +1,3 @@
@import "normalize.css";
/** /**
* Copyright 2013 The Rust Project Developers. See the COPYRIGHT * Copyright 2013 The Rust Project Developers. See the COPYRIGHT
* file at the top-level directory of this distribution and at * file at the top-level directory of this distribution and at
@ -61,6 +59,8 @@
src: local('Source Code Pro Semibold'), url("SourceCodePro-Semibold.woff") format('woff'); src: local('Source Code Pro Semibold'), url("SourceCodePro-Semibold.woff") format('woff');
} }
@import "normalize.css";
* { * {
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
@ -130,11 +130,11 @@ code, pre {
font-family: "Source Code Pro", Menlo, Monaco, Consolas, "DejaVu Sans Mono", Inconsolata, monospace; font-family: "Source Code Pro", Menlo, Monaco, Consolas, "DejaVu Sans Mono", Inconsolata, monospace;
white-space: pre-wrap; white-space: pre-wrap;
} }
.docblock code, .docblock-short code { .docblock code {
border-radius: 3px; border-radius: 3px;
padding: 0 0.2em; padding: 0 0.2em;
} }
.docblock pre code, .docblock-short pre code { .docblock pre code {
padding: 0; padding: 0;
} }
pre { pre {
@ -239,23 +239,23 @@ nav.sub {
} }
.line-numbers span { cursor: pointer; } .line-numbers span { cursor: pointer; }
.docblock-short p { .docblock.short p {
display: inline; display: inline;
} }
.docblock-short.nowrap { .docblock.short.nowrap {
display: block; display: block;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.docblock-short p { .docblock.short p {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
margin: 0; margin: 0;
} }
.docblock-short code { white-space: nowrap; } .docblock.short code { white-space: nowrap; }
.docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 { .docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 {
border-bottom: 1px solid; border-bottom: 1px solid;
@ -284,7 +284,7 @@ h3.impl > .out-of-band {
font-size: 21px; font-size: 21px;
} }
h4 > code, h3 > code, .invisible > code { h4 > code, h3 > code {
position: inherit; position: inherit;
} }
@ -292,12 +292,6 @@ h4 > code, h3 > code, .invisible > code {
z-index: 5; z-index: 5;
} }
.invisible {
background: rgba(0, 0, 0, 0);
width: 100%;
display: inline-block;
}
.content .in-band { .content .in-band {
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
@ -378,11 +372,6 @@ h4 > code, h3 > code, .invisible > code {
font-size: 90%; font-size: 90%;
} }
/* Shift where in trait listing down a line */
pre.trait .where::before {
content: '\a ';
}
nav { nav {
border-bottom: 1px solid; border-bottom: 1px solid;
padding-bottom: 10px; padding-bottom: 10px;
@ -414,7 +403,7 @@ a {
background: transparent; background: transparent;
} }
.docblock a:hover, .docblock-short a:hover, .stability a { .docblock a:hover, .stability a {
text-decoration: underline; text-decoration: underline;
} }
@ -464,8 +453,7 @@ a {
.content .search-results td:first-child { padding-right: 0; } .content .search-results td:first-child { padding-right: 0; }
.content .search-results td:first-child a { padding-right: 10px; } .content .search-results td:first-child a { padding-right: 10px; }
tr.result span.primitive::after { content: ' (primitive type)'; font-style: italic; color: black; tr.result span.primitive::after { content: ' (primitive type)'; font-style: italic; color: black}
}
body.blur > :not(#help) { body.blur > :not(#help) {
filter: blur(8px); filter: blur(8px);
@ -570,26 +558,19 @@ pre.rust .self, pre.rust .bool-val, pre.rust .prelude-val,
pre.rust .attribute, pre.rust .attribute .ident { color: #C82829; } pre.rust .attribute, pre.rust .attribute .ident { color: #C82829; }
pre.rust .macro, pre.rust .macro-nonterminal { color: #3E999F; } pre.rust .macro, pre.rust .macro-nonterminal { color: #3E999F; }
pre.rust .lifetime { color: #B76514; } pre.rust .lifetime { color: #B76514; }
pre.rust .question-mark {
color: #ff9011;
font-weight: bold;
}
.rusttest { display: none; }
pre.rust { position: relative; } pre.rust { position: relative; }
a.test-arrow { a.test-arrow {
background-color: rgba(78, 139, 202, 0.2);
display: inline-block; display: inline-block;
position: absolute; position: absolute;
background-color: #4e8bca;
padding: 5px 10px 5px 10px; padding: 5px 10px 5px 10px;
border-radius: 5px; border-radius: 5px;
font-size: 130%; font-size: 130%;
top: 5px; top: 5px;
right: 5px; right: 5px;
} }
a.test-arrow:hover{
background-color: #4e8bca;
text-decoration: none;
}
.section-header:hover a:after { .section-header:hover a:after {
content: '\2002\00a7\2002'; content: '\2002\00a7\2002';
@ -679,7 +660,6 @@ span.since {
:target > code { :target > code {
background: #FDFFD3; background: #FDFFD3;
opacity: 1;
} }
/* Media Queries */ /* Media Queries */

View File

@ -1,3 +1,3 @@
var searchIndex = {}; var searchIndex = {};
searchIndex["merkle"] = {"doc":"*merkle* implements a Merkle Tree in Rust.","items":[[3,"MerkleTree","merkle","A Merkle tree is a binary tree, with values of type `T` at the leafs,\nand where every node holds the hash of the concatenation of the hashes of\nits children nodes.",null,null],[12,"digest","","The hashing function used by this Merkle tree",0,null],[12,"tree","","The inner binary tree",0,null],[12,"height","","The height of the tree",0,null],[12,"count","","The number of leaf nodes in the tree",0,null],[3,"Proof","","An inclusion proof represent the fact that `value` is a member of a `MerkleTree`\nwith root hash `root_hash`, and hash function `digest`.\nA proof is a linked-list of `ProofBlock`s.\nTODO: Represent a proof as a vector of ProofBlock instead of a linked-list?",null,null],[12,"digest","","",1,null],[12,"root_hash","","",1,null],[12,"block","","",1,null],[12,"value","","",1,null],[3,"ProofBlock","","A `ProofBlock` is a linked-list holding the hash of the node, the hash of its sibling node,\nand the rest of the inclusion proof.",null,null],[12,"node_hash","","",2,null],[12,"sibling_hash","","",2,null],[12,"sub_proof","","",2,null],[4,"Positioned","","Tags a value so that we know from in branch (if any) it was found.",null,null],[13,"Nowhere","","No value was found",3,null],[13,"Left","","The value was found in the left branch",3,null],[13,"Right","","The value was found in the right branch",3,null],[11,"from_vec","","Constructs a Merkle Tree from a vector of data blocks",0,{"inputs":[{"name":"d"},{"name":"vec"}],"output":{"name":"self"}}],[11,"root_hash","","Returns the tree&#39;s root hash",0,null],[11,"gen_proof","","Generate an inclusion proof for the given value.\n`None` is returned if the given value is not found in the tree.",0,null],[11,"validate","","",1,null],[11,"validate_block","","",1,null],[11,"new","","Attempt to generate a proof that the hash `needle` is a member of the given `tree`.",2,{"inputs":[{"name":"tree"},{"name":"vec"}],"output":{"name":"option"}}],[11,"eq","","",3,null],[11,"ne","","",3,null],[8,"MerkleDigest","","The sole purpose of this trait is to extend the standard\n`crypto::digest::Digest` with a couple utility functions.",null,null],[10,"hash_bytes","","Compute the hash the given byte array",4,null],[10,"combine_hashes","","Compute the hash of the concatenation of `left` and `right`",4,null]],"paths":[[3,"MerkleTree"],[3,"Proof"],[3,"ProofBlock"],[4,"Positioned"],[8,"MerkleDigest"]]}; searchIndex["merkle"] = {"doc":"*merkle* implements a Merkle Tree in Rust.","items":[[3,"MerkleTree","merkle","A Merkle tree is a binary tree, with values of type `T` at the leafs,\nand where every node holds the hash of the concatenation of the hashes of\nits children nodes.",null,null],[12,"digest","","The hashing function used by this Merkle tree",0,null],[12,"tree","","The inner binary tree",0,null],[12,"height","","The height of the tree",0,null],[12,"count","","The number of leaf nodes in the tree",0,null],[3,"Proof","","An inclusion proof represent the fact that a `value` is a member\nof a `MerkleTree` with root hash `root_hash`, and hash function `digest`.",null,null],[12,"digest","","",1,null],[12,"root_hash","","",1,null],[12,"block","","",1,null],[12,"value","","",1,null],[11,"from_vec","","Constructs a Merkle Tree from a vector of data blocks",0,{"inputs":[{"name":"d"},{"name":"vec"}],"output":{"name":"self"}}],[11,"root_hash","","Returns the tree&#39;s root hash",0,null],[11,"gen_proof","","Generate an inclusion proof for the given value.\n`None` is returned if the given value is not found in the tree.",0,null],[11,"validate","","",1,null],[11,"validate_block","","",1,null]],"paths":[[3,"MerkleTree"],[3,"Proof"]]};
initSearch(searchIndex); initSearch(searchIndex);

View File

@ -60,7 +60,6 @@
<span id="16">16</span> <span id="16">16</span>
<span id="17">17</span> <span id="17">17</span>
<span id="18">18</span> <span id="18">18</span>
<span id="19">19</span>
</pre><pre class='rust '> </pre><pre class='rust '>
<span class='doccomment'>//! *merkle* implements a Merkle Tree in Rust.</span> <span class='doccomment'>//! *merkle* implements a Merkle Tree in Rust.</span>
@ -68,13 +67,12 @@
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>crypto</span>; <span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>crypto</span>;
<span class='kw'>mod</span> <span class='ident'>merkletree</span>; <span class='kw'>mod</span> <span class='ident'>merkletree</span>;
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>merkletree</span>::{ <span class='ident'>MerkleTree</span> }; <span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>merkletree</span>::<span class='ident'>MerkleTree</span>;
<span class='kw'>mod</span> <span class='ident'>proof</span>; <span class='kw'>mod</span> <span class='ident'>proof</span>;
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>proof</span>::{ <span class='ident'>Proof</span>, <span class='ident'>ProofBlock</span>, <span class='ident'>Positioned</span> }; <span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>proof</span>::<span class='ident'>Proof</span>;
<span class='kw'>mod</span> <span class='ident'>merkledigest</span>; <span class='kw'>mod</span> <span class='ident'>merkledigest</span>;
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>merkledigest</span>::{ <span class='ident'>MerkleDigest</span> };
<span class='kw'>mod</span> <span class='ident'>tree</span>; <span class='kw'>mod</span> <span class='ident'>tree</span>;
@ -138,9 +136,11 @@
<script> <script>
window.rootPath = "../../../"; window.rootPath = "../../../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../../../jquery.js"></script> <script src="../../../jquery.js"></script>
<script src="../../../main.js"></script> <script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script> <script defer src="../../../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -176,9 +176,11 @@
<script> <script>
window.rootPath = "../../../"; window.rootPath = "../../../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../../../jquery.js"></script> <script src="../../../jquery.js"></script>
<script src="../../../main.js"></script> <script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script> <script defer src="../../../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -320,9 +320,11 @@
<script> <script>
window.rootPath = "../../../"; window.rootPath = "../../../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../../../jquery.js"></script> <script src="../../../jquery.js"></script>
<script src="../../../main.js"></script> <script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script> <script defer src="../../../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -172,8 +172,6 @@
<span id="128">128</span> <span id="128">128</span>
<span id="129">129</span> <span id="129">129</span>
<span id="130">130</span> <span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
</pre><pre class='rust '> </pre><pre class='rust '>
<span class='kw'>use</span> <span class='ident'>crypto</span>::<span class='ident'>digest</span>::<span class='ident'>Digest</span>; <span class='kw'>use</span> <span class='ident'>crypto</span>::<span class='ident'>digest</span>::<span class='ident'>Digest</span>;
@ -181,10 +179,8 @@
<span class='kw'>use</span> <span class='ident'>merkledigest</span>::{ <span class='ident'>MerkleDigest</span> }; <span class='kw'>use</span> <span class='ident'>merkledigest</span>::{ <span class='ident'>MerkleDigest</span> };
<span class='kw'>use</span> <span class='ident'>tree</span>::{ <span class='ident'>Tree</span> }; <span class='kw'>use</span> <span class='ident'>tree</span>::{ <span class='ident'>Tree</span> };
<span class='doccomment'>/// An inclusion proof represent the fact that `value` is a member of a `MerkleTree`</span> <span class='doccomment'>/// An inclusion proof represent the fact that a `value` is a member</span>
<span class='doccomment'>/// with root hash `root_hash`, and hash function `digest`.</span> <span class='doccomment'>/// of a `MerkleTree` with root hash `root_hash`, and hash function `digest`.</span>
<span class='doccomment'>/// A proof is a linked-list of `ProofBlock`s.</span>
<span class='doccomment'>/// TODO: Represent a proof as a vector of ProofBlock instead of a linked-list?</span>
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Proof</span><span class='op'>&lt;</span><span class='ident'>D</span>, <span class='ident'>T</span><span class='op'>&gt;</span> { <span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Proof</span><span class='op'>&lt;</span><span class='ident'>D</span>, <span class='ident'>T</span><span class='op'>&gt;</span> {
<span class='kw'>pub</span> <span class='ident'>digest</span>: <span class='ident'>D</span>, <span class='kw'>pub</span> <span class='ident'>digest</span>: <span class='ident'>D</span>,
<span class='kw'>pub</span> <span class='ident'>root_hash</span>: <span class='ident'>Vec</span><span class='op'>&lt;</span><span class='ident'>u8</span><span class='op'>&gt;</span>, <span class='kw'>pub</span> <span class='ident'>root_hash</span>: <span class='ident'>Vec</span><span class='op'>&lt;</span><span class='ident'>u8</span><span class='op'>&gt;</span>,
@ -364,9 +360,11 @@
<script> <script>
window.rootPath = "../../../"; window.rootPath = "../../../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../../../jquery.js"></script> <script src="../../../jquery.js"></script>
<script src="../../../main.js"></script> <script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script> <script defer src="../../../search-index.js"></script>
</body> </body>
</html> </html>

View File

@ -200,9 +200,11 @@
<script> <script>
window.rootPath = "../../../"; window.rootPath = "../../../";
window.currentCrate = "merkle"; window.currentCrate = "merkle";
window.playgroundUrl = "";
</script> </script>
<script src="../../../jquery.js"></script> <script src="../../../jquery.js"></script>
<script src="../../../main.js"></script> <script src="../../../main.js"></script>
<script defer src="../../../search-index.js"></script> <script defer src="../../../search-index.js"></script>
</body> </body>
</html> </html>