halo2/rustdoc/latest/halo2_proofs/circuit/trait.Layouter.html

57 lines
28 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="A layout strategy within a circuit. The layouter is chip-agnostic and applies its strategy to the context and config it is given."><meta name="keywords" content="rust, rustlang, rust-lang, Layouter"><title>Layouter in halo2_proofs::circuit - 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" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.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"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/katex.min.js" integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.0/dist/contrib/auto-render.min.js" integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "\\(", right: "\\)", display: false},
{left: "$", right: "$", display: false},
{left: "\\[", right: "\\]", display: true}
]
});
});
</script>
</head><body class="rustdoc trait"><!--[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="../../halo2_proofs/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="../../halo2_proofs/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Layouter</a></h2><div class="sidebar-elems"><section><div class="block"><h3 class="sidebar-title"><a href="#required-associated-types">Required Associated Types</a></h3><ul><li><a href="#associatedtype.Root">Root</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><ul><li><a href="#tymethod.assign_region">assign_region</a></li><li><a href="#tymethod.assign_table">assign_table</a></li><li><a href="#tymethod.constrain_instance">constrain_instance</a></li><li><a href="#tymethod.get_root">get_root</a></li><li><a href="#tymethod.pop_namespace">pop_namespace</a></li><li><a href="#tymethod.push_namespace">push_namespace</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><ul><li><a href="#method.namespace">namespace</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div></section><h2 class="location"><a href="index.html">In halo2_proofs::circuit</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../halo2_proofs/index.html"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></a><nav class="sub"><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"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Trait <a href="../index.html">halo2_proofs</a>::<wbr><a href="index.html">circuit</a>::<wbr><a class="trait" href="#">Layouter</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/halo2_proofs/circuit.rs.html#398-472">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Layouter&lt;F:&nbsp;<a class="trait" href="../arithmetic/trait.Field.html" title="trait halo2_proofs::arithmetic::Field">Field</a>&gt; {
type <a href="#associatedtype.Root" class="associatedtype">Root</a>: <a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt;;
fn <a href="#tymethod.assign_region" class="fnname">assign_region</a>&lt;A, AR, N, NR&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: N,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment: A<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;AR, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="struct.Region.html" title="struct halo2_proofs::circuit::Region">Region</a>&lt;'_, F&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;AR, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>() -&gt; NR,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.assign_table" class="fnname">assign_table</a>&lt;A, N, NR&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: N,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment: A<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="struct.Table.html" title="struct halo2_proofs::circuit::Table">Table</a>&lt;'_, F&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>() -&gt; NR,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.constrain_instance" class="fnname">constrain_instance</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cell: <a class="struct" href="struct.Cell.html" title="struct halo2_proofs::circuit::Cell">Cell</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column: <a class="struct" href="../plonk/struct.Column.html" title="struct halo2_proofs::plonk::Column">Column</a>&lt;<a class="struct" href="../plonk/struct.Instance.html" title="struct halo2_proofs::plonk::Instance">Instance</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.get_root" class="fnname">get_root</a>(&amp;mut self) -&gt; &amp;mut Self::<a class="associatedtype" href="trait.Layouter.html#associatedtype.Root" title="type halo2_proofs::circuit::Layouter::Root">Root</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.push_namespace" class="fnname">push_namespace</a>&lt;NR, N&gt;(&amp;mut self, name_fn: N)<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; NR</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.pop_namespace" class="fnname">pop_namespace</a>(&amp;mut self, gadget_name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;);
fn <a href="#method.namespace" class="fnname">namespace</a>&lt;NR, N&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name_fn: N<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="struct.NamespacedLayouter.html" title="struct halo2_proofs::circuit::NamespacedLayouter">NamespacedLayouter</a>&lt;'_, F, Self::<a class="associatedtype" href="trait.Layouter.html#associatedtype.Root" title="type halo2_proofs::circuit::Layouter::Root">Root</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; NR</span>,
{ ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A layout strategy within a circuit. The layouter is chip-agnostic and applies its
strategy to the context and config it is given.</p>
<p>This abstracts over the circuit assignments, handling row indices etc.</p>
</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Root" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#401">source</a><h4 class="code-header">type <a href="#associatedtype.Root" class="associatedtype">Root</a>: <a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt;</h4></div></summary><div class="docblock"><p>Represents the type of the “root” of this layouter, so that nested namespaces
can minimize indirection.</p>
</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.assign_region" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#415-419">source</a><h4 class="code-header">fn <a href="#tymethod.assign_region" class="fnname">assign_region</a>&lt;A, AR, N, NR&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;name: N,<br>&nbsp;&nbsp;&nbsp;&nbsp;assignment: A<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;AR, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="struct.Region.html" title="struct halo2_proofs::circuit::Region">Region</a>&lt;'_, F&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;AR, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>() -&gt; NR,<br>&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,</span></h4></div></summary><div class="docblock"><p>Assign a region of gates to an absolute row number.</p>
<p>Inside the closure, the chip may freely use relative offsets; the <code>Layouter</code> will
treat these assignments as a single “region” within the circuit. Outside this
closure, the <code>Layouter</code> is allowed to optimise as it sees fit.</p>
<div class="example-wrap ignore"><div class='tooltip'></div><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>assign_region(<span class="kw-2">&amp;mut </span><span class="self">self</span>, || <span class="string">&quot;region name&quot;</span>, |region| {
<span class="kw">let </span>config = chip.config();
region.assign_advice(config.a, offset, || { <span class="prelude-val">Some</span>(value)});
});</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.assign_table" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#429-433">source</a><h4 class="code-header">fn <a href="#tymethod.assign_table" class="fnname">assign_table</a>&lt;A, N, NR&gt;(&amp;mut self, name: N, assignment: A) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="struct" href="struct.Table.html" title="struct halo2_proofs::circuit::Table">Table</a>&lt;'_, F&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>() -&gt; NR,<br>&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,</span></h4></div></summary><div class="docblock"><p>Assign a table region to an absolute row number.</p>
<div class="example-wrap ignore"><div class='tooltip'></div><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>assign_table(<span class="kw-2">&amp;mut </span><span class="self">self</span>, || <span class="string">&quot;table name&quot;</span>, |table| {
<span class="kw">let </span>config = chip.config();
table.assign_fixed(config.a, offset, || { <span class="prelude-val">Some</span>(value)});
});</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.constrain_instance" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#437-442">source</a><h4 class="code-header">fn <a href="#tymethod.constrain_instance" class="fnname">constrain_instance</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;cell: <a class="struct" href="struct.Cell.html" title="struct halo2_proofs::circuit::Cell">Cell</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;column: <a class="struct" href="../plonk/struct.Column.html" title="struct halo2_proofs::plonk::Column">Column</a>&lt;<a class="struct" href="../plonk/struct.Instance.html" title="struct halo2_proofs::plonk::Instance">Instance</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;row: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../plonk/enum.Error.html" title="enum halo2_proofs::plonk::Error">Error</a>&gt;</h4></div></summary><div class="docblock"><p>Constrains a <a href="struct.Cell.html" title="Cell"><code>Cell</code></a> to equal an instance columns row value at an
absolute position.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.get_root" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#447">source</a><h4 class="code-header">fn <a href="#tymethod.get_root" class="fnname">get_root</a>(&amp;mut self) -&gt; &amp;mut Self::<a class="associatedtype" href="trait.Layouter.html#associatedtype.Root" title="type halo2_proofs::circuit::Layouter::Root">Root</a></h4></div></summary><div class="docblock"><p>Gets the “root” of this assignment, bypassing the namespacing.</p>
<p>Not intended for downstream consumption; use <a href="trait.Layouter.html#method.namespace" title="Layouter::namespace"><code>Layouter::namespace</code></a> instead.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.push_namespace" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#452-455">source</a><h4 class="code-header">fn <a href="#tymethod.push_namespace" class="fnname">push_namespace</a>&lt;NR, N&gt;(&amp;mut self, name_fn: N)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; NR,</span></h4></div></summary><div class="docblock"><p>Creates a new (sub)namespace and enters into it.</p>
<p>Not intended for downstream consumption; use <a href="trait.Layouter.html#method.namespace" title="Layouter::namespace"><code>Layouter::namespace</code></a> instead.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.pop_namespace" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#460">source</a><h4 class="code-header">fn <a href="#tymethod.pop_namespace" class="fnname">pop_namespace</a>(&amp;mut self, gadget_name: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;)</h4></div></summary><div class="docblock"><p>Exits out of the existing namespace.</p>
<p>Not intended for downstream consumption; use <a href="trait.Layouter.html#method.namespace" title="Layouter::namespace"><code>Layouter::namespace</code></a> instead.</p>
</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.namespace" class="method has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#463-471">source</a><h4 class="code-header">fn <a href="#method.namespace" class="fnname">namespace</a>&lt;NR, N&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;name_fn: N<br>) -&gt; <a class="struct" href="struct.NamespacedLayouter.html" title="struct halo2_proofs::circuit::NamespacedLayouter">NamespacedLayouter</a>&lt;'_, F, Self::<a class="associatedtype" href="trait.Layouter.html#associatedtype.Root" title="type halo2_proofs::circuit::Layouter::Root">Root</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;NR: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;N: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>() -&gt; NR,</span></h4></div></summary><div class="docblock"><p>Enters into a namespace.</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Layouter%3CF%3E-for-NamespacedLayouter%3C%27a%2C%20F%2C%20L%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit.rs.html#479-524">source</a><a href="#impl-Layouter%3CF%3E-for-NamespacedLayouter%3C%27a%2C%20F%2C%20L%3E" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a, F:&nbsp;<a class="trait" href="../arithmetic/trait.Field.html" title="trait halo2_proofs::arithmetic::Field">Field</a>, L:&nbsp;<a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt; + 'a&gt; <a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt; for <a class="struct" href="struct.NamespacedLayouter.html" title="struct halo2_proofs::circuit::NamespacedLayouter">NamespacedLayouter</a>&lt;'a, F, L&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.Root-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Root-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Root" class="associatedtype">Root</a> = &lt;L as <a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt;&gt;::<a class="associatedtype" href="trait.Layouter.html#associatedtype.Root" title="type halo2_proofs::circuit::Layouter::Root">Root</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Layouter%3CF%3E-for-V1Pass%3C%27p%2C%20%27a%2C%20F%2C%20CS%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/halo2_proofs/circuit/floor_planner/v1.rs.html#163-221">source</a><a href="#impl-Layouter%3CF%3E-for-V1Pass%3C%27p%2C%20%27a%2C%20F%2C%20CS%3E" class="anchor"></a><h3 class="code-header in-band">impl&lt;'p, 'a, F:&nbsp;<a class="trait" href="../arithmetic/trait.Field.html" title="trait halo2_proofs::arithmetic::Field">Field</a>, CS:&nbsp;<a class="trait" href="../plonk/trait.Assignment.html" title="trait halo2_proofs::plonk::Assignment">Assignment</a>&lt;F&gt; + 'a&gt; <a class="trait" href="trait.Layouter.html" title="trait halo2_proofs::circuit::Layouter">Layouter</a>&lt;F&gt; for <a class="struct" href="floor_planner/struct.V1Pass.html" title="struct halo2_proofs::circuit::floor_planner::V1Pass">V1Pass</a>&lt;'p, 'a, F, CS&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.Root-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Root-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Root" class="associatedtype">Root</a> = <a class="struct" href="floor_planner/struct.V1Pass.html" title="struct halo2_proofs::circuit::floor_planner::V1Pass">V1Pass</a>&lt;'p, 'a, F, CS&gt;</h4></section></div></details></div><script src="../../implementors/halo2_proofs/circuit/trait.Layouter.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="halo2_proofs" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (f5193a9fc 2022-09-25)" ></div></body></html>