This commit is contained in:
edg-l 2024-02-14 09:14:53 +00:00
parent c0770cc40d
commit 92bafa69f6
49 changed files with 439 additions and 245 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
<!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 `lower_type` fn in crate `edlang_lowering`."><title>lower_type in edlang_lowering - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="edlang_lowering" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[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></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../edlang_lowering/index.html">edlang_lowering</a><span class="version">0.0.1-alpha.5</span></h2></div><div class="sidebar-elems"></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../edlang_lowering/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">edlang_lowering</a>::<wbr><a class="fn" href="#">lower_type</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/edlang_lowering/lib.rs.html#691-739">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn lower_type(_ctx: &amp;BuildCtx, t: &amp;<a class="struct" href="../edlang_ast/struct.Type.html" title="struct edlang_ast::Type">Type</a>) -&gt; <a class="struct" href="../edlang_ir/struct.TypeInfo.html" title="struct edlang_ir::TypeInfo">TypeInfo</a></code></pre></section></div></main></body></html>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../edlang_lowering/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">edlang_lowering</a>::<wbr><a class="fn" href="#">lower_type</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/edlang_lowering/lib.rs.html#788-836">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub fn lower_type(_ctx: &amp;BuildCtx, t: &amp;<a class="struct" href="../edlang_ast/struct.Type.html" title="struct edlang_ast::Type">Type</a>) -&gt; <a class="struct" href="../edlang_ir/struct.TypeInfo.html" title="struct edlang_ir::TypeInfo">TypeInfo</a></code></pre></section></div></main></body></html>

View file

@ -1,3 +1,3 @@
<!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 `edlang_lowering` crate."><title>edlang_lowering - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="edlang_lowering" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../edlang_lowering/index.html">edlang_lowering</a><span class="version">0.0.1-alpha.5</span></h2></div><div class="sidebar-elems"><ul class="block">
<li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#functions">Functions</a></li></ul></section></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../edlang_lowering/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">edlang_lowering</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/edlang_lowering/lib.rs.html#1-739">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.lower_modules.html" title="fn edlang_lowering::lower_modules">lower_modules</a></div></li><li><div class="item-name"><a class="fn" href="fn.lower_type.html" title="fn edlang_lowering::lower_type">lower_type</a></div></li></ul></section></div></main></body></html>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../edlang_lowering/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Crate <a class="mod" href="#">edlang_lowering</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/edlang_lowering/lib.rs.html#1-836">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.lower_modules.html" title="fn edlang_lowering::lower_modules">lower_modules</a></div></li><li><div class="item-name"><a class="fn" href="fn.lower_type.html" title="fn edlang_lowering::lower_type">lower_type</a></div></li></ul></section></div></main></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -439,6 +439,9 @@
<a href="#438" id="438">438</a>
<a href="#439" id="439">439</a>
<a href="#440" id="440">440</a>
<a href="#441" id="441">441</a>
<a href="#442" id="442">442</a>
<a href="#443" id="443">443</a>
</pre></div><pre class="rust"><code><span class="comment">// Based on a cfg
</span><span class="kw">use </span>std::collections::{BTreeMap, HashSet};
@ -566,10 +569,13 @@
}
}
<span class="kw">pub const fn </span>temp(ty: TypeInfo) -&gt; <span class="self">Self </span>{
<span class="kw">pub const fn </span>temp(ty: TypeKind) -&gt; <span class="self">Self </span>{
<span class="self">Self </span>{
span: <span class="prelude-val">None</span>,
ty,
ty: TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ty,
},
kind: LocalKind::Temp,
debug_name: <span class="prelude-val">None</span>,
mutable: <span class="bool-val">false</span>,

View file

@ -85,12 +85,9 @@
<a href="#84" id="84">84</a>
<a href="#85" id="85">85</a>
<a href="#86" id="86">86</a>
<a href="#87" id="87">87</a>
<a href="#88" id="88">88</a>
<a href="#89" id="89">89</a>
</pre></div><pre class="rust"><code><span class="kw">use </span>std::collections::HashMap;
<span class="kw">use </span>edlang_ir::{Body, DefId, Local, ModuleBody, ProgramBody, Statement, TypeInfo, TypeKind};
<span class="kw">use </span>edlang_ir::{Body, DefId, Local, ModuleBody, ProgramBody, Statement, TypeKind};
<span class="attr">#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default)]
</span><span class="kw">pub struct </span>IdGenerator {
@ -162,10 +159,7 @@
<span class="kw">pub fn </span>add_temp_local(<span class="kw-2">&amp;mut </span><span class="self">self</span>, ty_kind: TypeKind) -&gt; usize {
<span class="kw">let </span>id = <span class="self">self</span>.body.locals.len();
<span class="self">self</span>.body.locals.push(Local::temp(TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ty_kind,
}));
<span class="self">self</span>.body.locals.push(Local::temp(ty_kind));
id
}

View file

@ -738,9 +738,106 @@
<a href="#737" id="737">737</a>
<a href="#738" id="738">738</a>
<a href="#739" id="739">739</a>
<a href="#740" id="740">740</a>
<a href="#741" id="741">741</a>
<a href="#742" id="742">742</a>
<a href="#743" id="743">743</a>
<a href="#744" id="744">744</a>
<a href="#745" id="745">745</a>
<a href="#746" id="746">746</a>
<a href="#747" id="747">747</a>
<a href="#748" id="748">748</a>
<a href="#749" id="749">749</a>
<a href="#750" id="750">750</a>
<a href="#751" id="751">751</a>
<a href="#752" id="752">752</a>
<a href="#753" id="753">753</a>
<a href="#754" id="754">754</a>
<a href="#755" id="755">755</a>
<a href="#756" id="756">756</a>
<a href="#757" id="757">757</a>
<a href="#758" id="758">758</a>
<a href="#759" id="759">759</a>
<a href="#760" id="760">760</a>
<a href="#761" id="761">761</a>
<a href="#762" id="762">762</a>
<a href="#763" id="763">763</a>
<a href="#764" id="764">764</a>
<a href="#765" id="765">765</a>
<a href="#766" id="766">766</a>
<a href="#767" id="767">767</a>
<a href="#768" id="768">768</a>
<a href="#769" id="769">769</a>
<a href="#770" id="770">770</a>
<a href="#771" id="771">771</a>
<a href="#772" id="772">772</a>
<a href="#773" id="773">773</a>
<a href="#774" id="774">774</a>
<a href="#775" id="775">775</a>
<a href="#776" id="776">776</a>
<a href="#777" id="777">777</a>
<a href="#778" id="778">778</a>
<a href="#779" id="779">779</a>
<a href="#780" id="780">780</a>
<a href="#781" id="781">781</a>
<a href="#782" id="782">782</a>
<a href="#783" id="783">783</a>
<a href="#784" id="784">784</a>
<a href="#785" id="785">785</a>
<a href="#786" id="786">786</a>
<a href="#787" id="787">787</a>
<a href="#788" id="788">788</a>
<a href="#789" id="789">789</a>
<a href="#790" id="790">790</a>
<a href="#791" id="791">791</a>
<a href="#792" id="792">792</a>
<a href="#793" id="793">793</a>
<a href="#794" id="794">794</a>
<a href="#795" id="795">795</a>
<a href="#796" id="796">796</a>
<a href="#797" id="797">797</a>
<a href="#798" id="798">798</a>
<a href="#799" id="799">799</a>
<a href="#800" id="800">800</a>
<a href="#801" id="801">801</a>
<a href="#802" id="802">802</a>
<a href="#803" id="803">803</a>
<a href="#804" id="804">804</a>
<a href="#805" id="805">805</a>
<a href="#806" id="806">806</a>
<a href="#807" id="807">807</a>
<a href="#808" id="808">808</a>
<a href="#809" id="809">809</a>
<a href="#810" id="810">810</a>
<a href="#811" id="811">811</a>
<a href="#812" id="812">812</a>
<a href="#813" id="813">813</a>
<a href="#814" id="814">814</a>
<a href="#815" id="815">815</a>
<a href="#816" id="816">816</a>
<a href="#817" id="817">817</a>
<a href="#818" id="818">818</a>
<a href="#819" id="819">819</a>
<a href="#820" id="820">820</a>
<a href="#821" id="821">821</a>
<a href="#822" id="822">822</a>
<a href="#823" id="823">823</a>
<a href="#824" id="824">824</a>
<a href="#825" id="825">825</a>
<a href="#826" id="826">826</a>
<a href="#827" id="827">827</a>
<a href="#828" id="828">828</a>
<a href="#829" id="829">829</a>
<a href="#830" id="830">830</a>
<a href="#831" id="831">831</a>
<a href="#832" id="832">832</a>
<a href="#833" id="833">833</a>
<a href="#834" id="834">834</a>
<a href="#835" id="835">835</a>
<a href="#836" id="836">836</a>
</pre></div><pre class="rust"><code><span class="kw">use </span>std::collections::HashMap;
<span class="kw">use </span>ast::{BinaryOp, ModuleStatement};
<span class="kw">use </span>ast::{BinaryOp, ModuleStatement, WhileStmt};
<span class="kw">use </span>common::{BodyBuilder, BuildCtx};
<span class="kw">use </span>edlang_ast <span class="kw">as </span>ast;
<span class="kw">use </span>edlang_ir <span class="kw">as </span>ir;
@ -895,7 +992,7 @@
}
<span class="kw">for </span>stmt <span class="kw">in </span><span class="kw-2">&amp;</span>func.body.body {
lower_statement(<span class="kw-2">&amp;mut </span>builder, stmt, <span class="kw-2">&amp;</span>ret_ty);
lower_statement(<span class="kw-2">&amp;mut </span>builder, stmt, <span class="kw-2">&amp;</span>ret_ty.kind);
}
<span class="kw">let </span>(<span class="kw-2">mut </span>ctx, body) = (builder.ctx, builder.body);
@ -904,12 +1001,12 @@
ctx
}
<span class="kw">fn </span>lower_statement(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::Statement, ret_type: <span class="kw-2">&amp;</span>TypeInfo) {
<span class="kw">fn </span>lower_statement(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::Statement, ret_type: <span class="kw-2">&amp;</span>TypeKind) {
<span class="kw">match </span>info {
ast::Statement::Let(info) =&gt; lower_let(builder, info),
ast::Statement::Assign(info) =&gt; lower_assign(builder, info),
ast::Statement::For(<span class="kw">_</span>) =&gt; <span class="macro">todo!</span>(),
ast::Statement::While(<span class="kw">_</span>) =&gt; <span class="macro">todo!</span>(),
ast::Statement::While(info) =&gt; lower_while(builder, info, ret_type),
ast::Statement::If(info) =&gt; lower_if_stmt(builder, info, ret_type),
ast::Statement::Return(info) =&gt; lower_return(builder, info, ret_type),
ast::Statement::FnCall(info) =&gt; {
@ -918,9 +1015,80 @@
}
}
<span class="kw">fn </span>lower_if_stmt(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::IfStmt, ret_type: <span class="kw-2">&amp;</span>TypeInfo) {
<span class="kw">fn </span>lower_while(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>WhileStmt, ret_type: <span class="kw-2">&amp;</span>TypeKind) {
<span class="kw">let </span>statements = std::mem::take(<span class="kw-2">&amp;mut </span>builder.statements);
builder.body.blocks.push(BasicBlock {
statements: statements.into(),
terminator: Terminator::Target(builder.body.blocks.len() + <span class="number">1</span>),
});
<span class="kw">let </span>(discriminator, discriminator_type) = lower_expr(builder, <span class="kw-2">&amp;</span>info.condition, <span class="prelude-val">None</span>);
<span class="kw">let </span>local = builder.add_temp_local(TypeKind::Bool);
<span class="kw">let </span>place = Place {
local,
projection: Default::default(),
};
builder.statements.push(Statement {
span: <span class="prelude-val">None</span>,
kind: StatementKind::Assign(place.clone(), discriminator),
});
<span class="comment">// keep idx to change terminator
</span><span class="kw">let </span>check_block_idx = builder.body.blocks.len();
<span class="kw">let </span>statements = std::mem::take(<span class="kw-2">&amp;mut </span>builder.statements);
builder.body.blocks.push(BasicBlock {
statements: statements.into(),
terminator: Terminator::Unreachable,
});
<span class="comment">// keep idx for switch targets
</span><span class="kw">let </span>first_then_block_idx = builder.body.blocks.len();
<span class="kw">for </span>stmt <span class="kw">in </span><span class="kw-2">&amp;</span>info.block.body {
lower_statement(builder, stmt, ret_type);
}
<span class="comment">// keet idx to change terminator if there is no return
</span><span class="kw">let </span>last_then_block_idx = <span class="kw">if </span>!<span class="macro">matches!</span>(
builder.body.blocks.last().unwrap().terminator,
Terminator::Return
) {
builder.body.blocks.len();
<span class="kw">let </span>statements = std::mem::take(<span class="kw-2">&amp;mut </span>builder.statements);
<span class="kw">let </span>idx = builder.body.blocks.len();
builder.body.blocks.push(BasicBlock {
statements: statements.into(),
terminator: Terminator::Unreachable,
});
<span class="prelude-val">Some</span>(idx)
} <span class="kw">else </span>{
<span class="prelude-val">None
</span>};
<span class="kw">let </span>otherwise_block_idx = builder.body.blocks.len();
<span class="kw">let </span>targets = SwitchTarget {
values: <span class="macro">vec!</span>[discriminator_type.get_falsy_value()],
targets: <span class="macro">vec!</span>[otherwise_block_idx, first_then_block_idx],
};
<span class="kw">let </span>kind = Terminator::SwitchInt {
discriminator: Operand::Move(place),
targets,
};
builder.body.blocks[check_block_idx].terminator = kind;
<span class="kw">if let </span><span class="prelude-val">Some</span>(last_then_block_idx) = last_then_block_idx {
builder.body.blocks[last_then_block_idx].terminator = Terminator::Target(check_block_idx);
}
}
<span class="kw">fn </span>lower_if_stmt(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::IfStmt, ret_type: <span class="kw-2">&amp;</span>TypeKind) {
<span class="kw">let </span>cond_ty = find_expr_type(builder, <span class="kw-2">&amp;</span>info.condition).expect(<span class="string">"coouldnt find cond type"</span>);
<span class="kw">let </span>condition = lower_expr(builder, <span class="kw-2">&amp;</span>info.condition, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>cond_ty));
<span class="kw">let </span>(condition, condition_ty) = lower_expr(builder, <span class="kw-2">&amp;</span>info.condition, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>cond_ty));
<span class="kw">let </span>local = builder.add_temp_local(TypeKind::Bool);
<span class="kw">let </span>place = Place {
@ -989,7 +1157,7 @@
</span>};
<span class="kw">let </span>targets = SwitchTarget {
values: <span class="macro">vec!</span>[TypeKind::Bool.get_falsy_value()],
values: <span class="macro">vec!</span>[condition_ty.get_falsy_value()],
targets: <span class="macro">vec!</span>[first_else_block_idx, first_then_block_idx],
};
@ -1011,7 +1179,7 @@
<span class="kw">fn </span>lower_let(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::LetStmt) {
<span class="kw">let </span>ty = lower_type(<span class="kw-2">&amp;</span>builder.ctx, <span class="kw-2">&amp;</span>info.r#type);
<span class="kw">let </span>rvalue = lower_expr(builder, <span class="kw-2">&amp;</span>info.value, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty));
<span class="kw">let </span>(rvalue, _ty) = lower_expr(builder, <span class="kw-2">&amp;</span>info.value, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty.kind));
<span class="kw">let </span>local_idx = builder.name_to_local.get(<span class="kw-2">&amp;</span>info.name.name).copied().unwrap();
builder.statements.push(Statement {
span: <span class="prelude-val">Some</span>(info.name.span),
@ -1032,8 +1200,8 @@
<span class="kw">fn </span>lower_assign(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::AssignStmt) {
<span class="kw">let </span>local = <span class="kw-2">*</span>builder.name_to_local.get(<span class="kw-2">&amp;</span>info.name.first.name).unwrap();
<span class="kw">let </span>ty = builder.body.locals[local].ty.clone();
<span class="kw">let </span>rvalue = lower_expr(builder, <span class="kw-2">&amp;</span>info.value, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty));
<span class="kw">let </span>place = lower_path(builder, <span class="kw-2">&amp;</span>info.name);
<span class="kw">let </span>(rvalue, _ty) = lower_expr(builder, <span class="kw-2">&amp;</span>info.value, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty.kind));
<span class="kw">let </span>(place, _ty) = lower_path(builder, <span class="kw-2">&amp;</span>info.name);
builder.statements.push(Statement {
span: <span class="prelude-val">Some</span>(info.name.first.span),
@ -1041,66 +1209,67 @@
})
}
<span class="kw">fn </span>find_expr_type(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::Expression) -&gt; <span class="prelude-ty">Option</span>&lt;TypeInfo&gt; {
<span class="prelude-val">Some</span>(TypeInfo {
span: <span class="prelude-val">None</span>,
kind: <span class="kw">match </span>info {
ast::Expression::Value(x) =&gt; <span class="kw">match </span>x {
ast::ValueExpr::Bool { .. } =&gt; TypeKind::Bool,
ast::ValueExpr::Char { .. } =&gt; TypeKind::Char,
ast::ValueExpr::Int { .. } =&gt; <span class="kw">return </span><span class="prelude-val">None</span>,
ast::ValueExpr::Float { .. } =&gt; <span class="kw">return </span><span class="prelude-val">None</span>,
ast::ValueExpr::Str { .. } =&gt; <span class="macro">todo!</span>(),
ast::ValueExpr::Path(path) =&gt; {
<span class="comment">// todo: handle full path
</span>builder.get_local(<span class="kw-2">&amp;</span>path.first.name)<span class="question-mark">?</span>.ty.kind.clone()
}
},
ast::Expression::FnCall(info) =&gt; {
<span class="kw">let </span>fn_id = {
<span class="kw">let </span>mod_body = builder.get_module_body();
<span class="kw">if let </span><span class="prelude-val">Some</span>(id) = mod_body.symbols.functions.get(<span class="kw-2">&amp;</span>info.name.name) {
<span class="kw-2">*</span>id
} <span class="kw">else </span>{
<span class="kw-2">*</span>mod_body
.imports
.get(<span class="kw-2">&amp;</span>info.name.name)
.expect(<span class="string">"function call not found"</span>)
}
};
builder
.ctx
.body
.function_signatures
.get(<span class="kw-2">&amp;</span>fn_id)<span class="question-mark">?
</span>.<span class="number">1
</span>.kind
.clone()
}
ast::Expression::Unary(<span class="kw">_</span>, info) =&gt; find_expr_type(builder, info)<span class="question-mark">?</span>.kind,
ast::Expression::Binary(lhs, op, rhs) =&gt; {
<span class="kw">if </span><span class="macro">matches!</span>(op, BinaryOp::Logic(<span class="kw">_</span>, <span class="kw">_</span>)) {
TypeKind::Bool
} <span class="kw">else </span>{
find_expr_type(builder, lhs)
.or(find_expr_type(builder, rhs))<span class="question-mark">?
</span>.kind
}
<span class="kw">fn </span>find_expr_type(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::Expression) -&gt; <span class="prelude-ty">Option</span>&lt;TypeKind&gt; {
<span class="prelude-val">Some</span>(<span class="kw">match </span>info {
ast::Expression::Value(x) =&gt; <span class="kw">match </span>x {
ast::ValueExpr::Bool { .. } =&gt; TypeKind::Bool,
ast::ValueExpr::Char { .. } =&gt; TypeKind::Char,
ast::ValueExpr::Int { .. } =&gt; <span class="kw">return </span><span class="prelude-val">None</span>,
ast::ValueExpr::Float { .. } =&gt; <span class="kw">return </span><span class="prelude-val">None</span>,
ast::ValueExpr::Str { .. } =&gt; <span class="macro">todo!</span>(),
ast::ValueExpr::Path(path) =&gt; {
<span class="comment">// todo: handle full path
</span>builder.get_local(<span class="kw-2">&amp;</span>path.first.name)<span class="question-mark">?</span>.ty.kind.clone()
}
},
ast::Expression::FnCall(info) =&gt; {
<span class="kw">let </span>fn_id = {
<span class="kw">let </span>mod_body = builder.get_module_body();
<span class="kw">if let </span><span class="prelude-val">Some</span>(id) = mod_body.symbols.functions.get(<span class="kw-2">&amp;</span>info.name.name) {
<span class="kw-2">*</span>id
} <span class="kw">else </span>{
<span class="kw-2">*</span>mod_body
.imports
.get(<span class="kw-2">&amp;</span>info.name.name)
.expect(<span class="string">"function call not found"</span>)
}
};
builder
.ctx
.body
.function_signatures
.get(<span class="kw-2">&amp;</span>fn_id)<span class="question-mark">?
</span>.<span class="number">1
</span>.kind
.clone()
}
ast::Expression::Unary(<span class="kw">_</span>, info) =&gt; find_expr_type(builder, info)<span class="question-mark">?</span>,
ast::Expression::Binary(lhs, op, rhs) =&gt; {
<span class="kw">if </span><span class="macro">matches!</span>(op, BinaryOp::Logic(<span class="kw">_</span>, <span class="kw">_</span>)) {
TypeKind::Bool
} <span class="kw">else </span>{
find_expr_type(builder, lhs).or(find_expr_type(builder, rhs))<span class="question-mark">?
</span>}
}
})
}
<span class="kw">fn </span>lower_expr(
builder: <span class="kw-2">&amp;mut </span>BodyBuilder,
info: <span class="kw-2">&amp;</span>ast::Expression,
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeInfo&gt;,
) -&gt; ir::RValue {
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeKind&gt;,
) -&gt; (ir::RValue, TypeKind) {
<span class="kw">match </span>info {
ast::Expression::Value(info) =&gt; ir::RValue::Use(lower_value(builder, info, type_hint)),
ast::Expression::FnCall(info) =&gt; ir::RValue::Use(lower_fn_call(builder, info)),
ast::Expression::Value(info) =&gt; {
<span class="kw">let </span>(value, ty) = lower_value(builder, info, type_hint);
(ir::RValue::Use(value), ty)
}
ast::Expression::FnCall(info) =&gt; {
<span class="kw">let </span>(value, ty) = lower_fn_call(builder, info);
(ir::RValue::Use(value), ty)
}
ast::Expression::Unary(<span class="kw">_</span>, <span class="kw">_</span>) =&gt; <span class="macro">todo!</span>(),
ast::Expression::Binary(lhs, op, rhs) =&gt; {
lower_binary_expr(builder, lhs, op, rhs, type_hint)
@ -1113,23 +1282,24 @@
lhs: <span class="kw-2">&amp;</span>ast::Expression,
op: <span class="kw-2">&amp;</span>ast::BinaryOp,
rhs: <span class="kw-2">&amp;</span>ast::Expression,
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeInfo&gt;,
) -&gt; ir::RValue {
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeKind&gt;,
) -&gt; (ir::RValue, TypeKind) {
<span class="kw">let </span>(lhs, lhs_ty) = <span class="kw">if </span>type_hint.is_none() {
<span class="kw">let </span>ty = find_expr_type(builder, lhs);
(lower_expr(builder, lhs, ty.as_ref()), ty)
<span class="kw">let </span>ty = find_expr_type(builder, lhs)
.unwrap_or(find_expr_type(builder, rhs).expect(<span class="string">"cant find type"</span>));
lower_expr(builder, lhs, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty))
} <span class="kw">else </span>{
(lower_expr(builder, lhs, type_hint), type_hint.cloned())
lower_expr(builder, lhs, type_hint)
};
<span class="kw">let </span>(rhs, rhs_ty) = <span class="kw">if </span>type_hint.is_none() {
<span class="kw">let </span>ty = find_expr_type(builder, rhs);
(lower_expr(builder, rhs, ty.as_ref()), ty)
<span class="kw">let </span>ty = find_expr_type(builder, rhs).unwrap_or(lhs_ty.clone());
lower_expr(builder, rhs, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>ty))
} <span class="kw">else </span>{
(lower_expr(builder, rhs, type_hint), type_hint.cloned())
lower_expr(builder, rhs, type_hint)
};
<span class="kw">let </span>lhs_local = builder.add_local(Local::temp(lhs_ty.unwrap().clone()));
<span class="kw">let </span>rhs_local = builder.add_local(Local::temp(rhs_ty.unwrap().clone()));
<span class="kw">let </span>lhs_local = builder.add_local(Local::temp(lhs_ty.clone()));
<span class="kw">let </span>rhs_local = builder.add_local(Local::temp(rhs_ty.clone()));
<span class="kw">let </span>lhs_place = Place {
local: lhs_local,
projection: Default::default(),
@ -1163,34 +1333,46 @@
<span class="kw">let </span>rhs = Operand::Move(rhs_place);
<span class="kw">match </span>op {
ast::BinaryOp::Arith(op, <span class="kw">_</span>) =&gt; <span class="kw">match </span>op {
ast::ArithOp::Add =&gt; ir::RValue::BinOp(ir::BinOp::Add, lhs, rhs),
ast::ArithOp::Sub =&gt; ir::RValue::BinOp(ir::BinOp::Sub, lhs, rhs),
ast::ArithOp::Mul =&gt; ir::RValue::BinOp(ir::BinOp::Mul, lhs, rhs),
ast::ArithOp::Div =&gt; ir::RValue::BinOp(ir::BinOp::Div, lhs, rhs),
ast::ArithOp::Mod =&gt; ir::RValue::BinOp(ir::BinOp::Rem, lhs, rhs),
},
ast::BinaryOp::Logic(op, <span class="kw">_</span>) =&gt; <span class="kw">match </span>op {
ast::LogicOp::And =&gt; ir::RValue::LogicOp(ir::LogicalOp::And, lhs, rhs),
ast::LogicOp::Or =&gt; ir::RValue::LogicOp(ir::LogicalOp::Or, lhs, rhs),
},
ast::BinaryOp::Compare(op, <span class="kw">_</span>) =&gt; <span class="kw">match </span>op {
ast::CmpOp::Eq =&gt; ir::RValue::BinOp(ir::BinOp::Eq, lhs, rhs),
ast::CmpOp::NotEq =&gt; ir::RValue::BinOp(ir::BinOp::Ne, lhs, rhs),
ast::CmpOp::Lt =&gt; ir::RValue::BinOp(ir::BinOp::Lt, lhs, rhs),
ast::CmpOp::LtEq =&gt; ir::RValue::BinOp(ir::BinOp::Le, lhs, rhs),
ast::CmpOp::Gt =&gt; ir::RValue::BinOp(ir::BinOp::Gt, lhs, rhs),
ast::CmpOp::GtEq =&gt; ir::RValue::BinOp(ir::BinOp::Ge, lhs, rhs),
},
ast::BinaryOp::Bitwise(op, <span class="kw">_</span>) =&gt; <span class="kw">match </span>op {
ast::BitwiseOp::And =&gt; ir::RValue::BinOp(ir::BinOp::BitAnd, lhs, rhs),
ast::BitwiseOp::Or =&gt; ir::RValue::BinOp(ir::BinOp::BitOr, lhs, rhs),
ast::BitwiseOp::Xor =&gt; ir::RValue::BinOp(ir::BinOp::BitXor, lhs, rhs),
},
ast::BinaryOp::Arith(op, <span class="kw">_</span>) =&gt; (
<span class="kw">match </span>op {
ast::ArithOp::Add =&gt; ir::RValue::BinOp(ir::BinOp::Add, lhs, rhs),
ast::ArithOp::Sub =&gt; ir::RValue::BinOp(ir::BinOp::Sub, lhs, rhs),
ast::ArithOp::Mul =&gt; ir::RValue::BinOp(ir::BinOp::Mul, lhs, rhs),
ast::ArithOp::Div =&gt; ir::RValue::BinOp(ir::BinOp::Div, lhs, rhs),
ast::ArithOp::Mod =&gt; ir::RValue::BinOp(ir::BinOp::Rem, lhs, rhs),
},
lhs_ty,
),
ast::BinaryOp::Logic(op, <span class="kw">_</span>) =&gt; (
<span class="kw">match </span>op {
ast::LogicOp::And =&gt; ir::RValue::LogicOp(ir::LogicalOp::And, lhs, rhs),
ast::LogicOp::Or =&gt; ir::RValue::LogicOp(ir::LogicalOp::Or, lhs, rhs),
},
TypeKind::Bool,
),
ast::BinaryOp::Compare(op, <span class="kw">_</span>) =&gt; (
<span class="kw">match </span>op {
ast::CmpOp::Eq =&gt; ir::RValue::BinOp(ir::BinOp::Eq, lhs, rhs),
ast::CmpOp::NotEq =&gt; ir::RValue::BinOp(ir::BinOp::Ne, lhs, rhs),
ast::CmpOp::Lt =&gt; ir::RValue::BinOp(ir::BinOp::Lt, lhs, rhs),
ast::CmpOp::LtEq =&gt; ir::RValue::BinOp(ir::BinOp::Le, lhs, rhs),
ast::CmpOp::Gt =&gt; ir::RValue::BinOp(ir::BinOp::Gt, lhs, rhs),
ast::CmpOp::GtEq =&gt; ir::RValue::BinOp(ir::BinOp::Ge, lhs, rhs),
},
TypeKind::Bool,
),
ast::BinaryOp::Bitwise(op, <span class="kw">_</span>) =&gt; (
<span class="kw">match </span>op {
ast::BitwiseOp::And =&gt; ir::RValue::BinOp(ir::BinOp::BitAnd, lhs, rhs),
ast::BitwiseOp::Or =&gt; ir::RValue::BinOp(ir::BinOp::BitOr, lhs, rhs),
ast::BitwiseOp::Xor =&gt; ir::RValue::BinOp(ir::BinOp::BitXor, lhs, rhs),
},
lhs_ty,
),
}
}
<span class="kw">fn </span>lower_fn_call(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::FnCallExpr) -&gt; Operand {
<span class="kw">fn </span>lower_fn_call(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::FnCallExpr) -&gt; (Operand, TypeKind) {
<span class="kw">let </span>fn_id = {
<span class="kw">let </span>mod_body = builder.get_module_body();
@ -1233,11 +1415,11 @@
<span class="kw">let </span><span class="kw-2">mut </span>args = Vec::new();
<span class="kw">for </span>(arg, arg_ty) <span class="kw">in </span>info.params.iter().zip(args_ty) {
<span class="kw">let </span>rvalue = lower_expr(builder, arg, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>arg_ty));
<span class="kw">let </span>(rvalue, _rvalue_ty) = lower_expr(builder, arg, <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>arg_ty.kind));
args.push(rvalue);
}
<span class="kw">let </span>dest_local = builder.add_local(Local::temp(ret_ty));
<span class="kw">let </span>dest_local = builder.add_local(Local::temp(ret_ty.kind.clone()));
<span class="kw">let </span>dest_place = Place {
local: dest_local,
@ -1260,59 +1442,62 @@
terminator: kind,
});
Operand::Move(dest_place)
(Operand::Move(dest_place), ret_ty.kind.clone())
}
<span class="kw">fn </span>lower_value(
builder: <span class="kw-2">&amp;mut </span>BodyBuilder,
info: <span class="kw-2">&amp;</span>ast::ValueExpr,
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeInfo&gt;,
) -&gt; Operand {
type_hint: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>TypeKind&gt;,
) -&gt; (Operand, TypeKind) {
<span class="kw">match </span>info {
ast::ValueExpr::Bool { value, span } =&gt; ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Bool,
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::Bool(<span class="kw-2">*</span>value))),
}),
ast::ValueExpr::Char { value, span } =&gt; ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Char,
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::U32((<span class="kw-2">*</span>value) <span class="kw">as </span>u32))),
}),
ast::ValueExpr::Bool { value, span } =&gt; (
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Bool,
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::Bool(<span class="kw-2">*</span>value))),
}),
TypeKind::Bool,
),
ast::ValueExpr::Char { value, span } =&gt; (
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Char,
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::U32(
(<span class="kw-2">*</span>value) <span class="kw">as </span>u32,
))),
}),
TypeKind::Char,
),
ast::ValueExpr::Int { value, span } =&gt; {
<span class="kw">let </span>(ty, val, type_span) = <span class="kw">match </span>type_hint {
<span class="prelude-val">Some</span>(type_hint) =&gt; <span class="kw">match </span><span class="kw-2">&amp;</span>type_hint.kind {
<span class="kw">let </span>(ty, val) = <span class="kw">match </span>type_hint {
<span class="prelude-val">Some</span>(type_hint) =&gt; <span class="kw">match </span><span class="kw-2">&amp;</span>type_hint {
ir::TypeKind::Int(int_type) =&gt; <span class="kw">match </span>int_type {
ir::IntTy::I128 =&gt; (
ir::TypeKind::Int(ir::IntTy::I128),
ir::ConstValue::I128((<span class="kw-2">*</span>value) <span class="kw">as </span>i128),
type_hint.span,
),
ir::IntTy::I64 =&gt; (
ir::TypeKind::Int(ir::IntTy::I64),
ir::ConstValue::I64((<span class="kw-2">*</span>value) <span class="kw">as </span>i64),
type_hint.span,
),
ir::IntTy::I32 =&gt; (
ir::TypeKind::Int(ir::IntTy::I32),
ir::ConstValue::I32((<span class="kw-2">*</span>value) <span class="kw">as </span>i32),
type_hint.span,
),
ir::IntTy::I16 =&gt; (
ir::TypeKind::Int(ir::IntTy::I16),
ir::ConstValue::I16((<span class="kw-2">*</span>value) <span class="kw">as </span>i16),
type_hint.span,
),
ir::IntTy::I8 =&gt; (
ir::TypeKind::Int(ir::IntTy::I8),
ir::ConstValue::I8((<span class="kw-2">*</span>value) <span class="kw">as </span>i8),
type_hint.span,
),
ir::IntTy::Isize =&gt; <span class="macro">todo!</span>(),
},
@ -1320,27 +1505,22 @@
ir::UintTy::U128 =&gt; (
ir::TypeKind::Uint(ir::UintTy::U128),
ir::ConstValue::U128(<span class="kw-2">*</span>value),
type_hint.span,
),
ir::UintTy::U64 =&gt; (
ir::TypeKind::Uint(ir::UintTy::U64),
ir::ConstValue::U64((<span class="kw-2">*</span>value) <span class="kw">as </span>u64),
type_hint.span,
),
ir::UintTy::U32 =&gt; (
ir::TypeKind::Uint(ir::UintTy::U32),
ir::ConstValue::U32((<span class="kw-2">*</span>value) <span class="kw">as </span>u32),
type_hint.span,
),
ir::UintTy::U16 =&gt; (
ir::TypeKind::Uint(ir::UintTy::U16),
ir::ConstValue::U16((<span class="kw-2">*</span>value) <span class="kw">as </span>u16),
type_hint.span,
),
ir::UintTy::U8 =&gt; (
ir::TypeKind::Uint(ir::UintTy::U8),
ir::ConstValue::U8((<span class="kw-2">*</span>value) <span class="kw">as </span>u8),
type_hint.span,
),
<span class="kw">_ </span>=&gt; <span class="macro">todo!</span>(),
},
@ -1349,38 +1529,47 @@
<span class="prelude-val">None </span>=&gt; <span class="macro">todo!</span>(),
};
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: type_span,
kind: ty,
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(val)),
})
(
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ty.clone(),
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(val)),
}),
ty,
)
}
ast::ValueExpr::Float { value, span } =&gt; <span class="kw">match </span>type_hint {
<span class="prelude-val">Some</span>(type_hint) =&gt; <span class="kw">match </span><span class="kw-2">&amp;</span>type_hint.kind {
<span class="prelude-val">Some</span>(type_hint) =&gt; <span class="kw">match </span><span class="kw-2">&amp;</span>type_hint {
TypeKind::Float(float_ty) =&gt; <span class="kw">match </span>float_ty {
ir::FloatTy::F32 =&gt; ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: type_hint.span,
kind: ir::TypeKind::Float(ir::FloatTy::F32),
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::F32(
value.parse().unwrap(),
))),
}),
ir::FloatTy::F64 =&gt; ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: type_hint.span,
kind: ir::TypeKind::Float(ir::FloatTy::F64),
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::F64(
value.parse().unwrap(),
))),
}),
ir::FloatTy::F32 =&gt; (
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Float(ir::FloatTy::F32),
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::F32(
value.parse().unwrap(),
))),
}),
type_hint.clone(),
),
ir::FloatTy::F64 =&gt; (
ir::Operand::Constant(ir::ConstData {
span: <span class="prelude-val">Some</span>(<span class="kw-2">*</span>span),
type_info: ir::TypeInfo {
span: <span class="prelude-val">None</span>,
kind: ir::TypeKind::Float(ir::FloatTy::F64),
},
kind: ir::ConstKind::Value(ir::ValueTree::Leaf(ir::ConstValue::F64(
value.parse().unwrap(),
))),
}),
type_hint.clone(),
),
},
<span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
},
@ -1389,14 +1578,15 @@
ast::ValueExpr::Str { value: <span class="kw">_</span>, span: <span class="kw">_ </span>} =&gt; <span class="macro">todo!</span>(),
ast::ValueExpr::Path(info) =&gt; {
<span class="comment">// add deref info to path
</span>Operand::Move(lower_path(builder, info))
</span><span class="kw">let </span>(place, ty) = lower_path(builder, info);
(Operand::Move(place), ty)
}
}
}
<span class="kw">fn </span>lower_return(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::ReturnStmt, return_type: <span class="kw-2">&amp;</span>TypeInfo) {
<span class="kw">fn </span>lower_return(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::ReturnStmt, return_type: <span class="kw-2">&amp;</span>TypeKind) {
<span class="kw">if let </span><span class="prelude-val">Some</span>(value_expr) = <span class="kw-2">&amp;</span>info.value {
<span class="kw">let </span>value = lower_expr(builder, value_expr, <span class="prelude-val">Some</span>(return_type));
<span class="kw">let </span>(value, _ty) = lower_expr(builder, value_expr, <span class="prelude-val">Some</span>(return_type));
builder.statements.push(Statement {
span: <span class="prelude-val">None</span>,
kind: StatementKind::Assign(
@ -1416,16 +1606,20 @@
});
}
<span class="kw">fn </span>lower_path(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::PathExpr) -&gt; ir::Place {
<span class="kw">fn </span>lower_path(builder: <span class="kw-2">&amp;mut </span>BodyBuilder, info: <span class="kw-2">&amp;</span>ast::PathExpr) -&gt; (ir::Place, TypeKind) {
<span class="kw">let </span>local = <span class="kw-2">*</span>builder
.name_to_local
.get(<span class="kw-2">&amp;</span>info.first.name)
.expect(<span class="string">"local not found"</span>);
<span class="kw">let </span>ty = builder.body.locals[local].ty.kind.clone();
Place {
local,
projection: Default::default(), <span class="comment">// todo, field array deref
</span>}
(
Place {
local,
projection: Default::default(), <span class="comment">// todo, field array deref
</span>},
ty,
)
}
<span class="kw">pub fn </span>lower_type(_ctx: <span class="kw-2">&amp;</span>BuildCtx, t: <span class="kw-2">&amp;</span>ast::Type) -&gt; ir::TypeInfo {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -14,7 +14,7 @@
"object":[["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.U64Bytes.html\" title=\"struct object::endian::U64Bytes\">U64Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.I64Bytes.html\" title=\"struct object::endian::I64Bytes\">I64Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.U32Bytes.html\" title=\"struct object::endian::U32Bytes\">U32Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.I32Bytes.html\" title=\"struct object::endian::I32Bytes\">I32Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.I16Bytes.html\" title=\"struct object::endian::I16Bytes\">I16Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"object/endian/struct.U16Bytes.html\" title=\"struct object::endian::U16Bytes\">U16Bytes</a>&lt;E&gt;"]],
"proc_macro2":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"proc_macro2/struct.Ident.html\" title=\"struct proc_macro2::Ident\">Ident</a>"]],
"regex_automata":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.SmallIndex.html\" title=\"struct regex_automata::util::primitives::SmallIndex\">SmallIndex</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.StateID.html\" title=\"struct regex_automata::util::primitives::StateID\">StateID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_automata/util/alphabet/struct.Unit.html\" title=\"struct regex_automata::util::alphabet::Unit\">Unit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.NonMaxUsize.html\" title=\"struct regex_automata::util::primitives::NonMaxUsize\">NonMaxUsize</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_automata/struct.PatternID.html\" title=\"struct regex_automata::PatternID\">PatternID</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/utf8/struct.Utf8Range.html\" title=\"struct regex_syntax::utf8::Utf8Range\">Utf8Range</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassBytesRange.html\" title=\"struct regex_syntax::hir::ClassBytesRange\">ClassBytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Span.html\" title=\"struct regex_syntax::ast::Span\">Span</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"regex_syntax/utf8/enum.Utf8Sequence.html\" title=\"enum regex_syntax::utf8::Utf8Sequence\">Utf8Sequence</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/literal/struct.Literal.html\" title=\"struct regex_syntax::hir::literal::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Position.html\" title=\"struct regex_syntax::ast::Position\">Position</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassUnicodeRange.html\" title=\"struct regex_syntax::hir::ClassUnicodeRange\">ClassUnicodeRange</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"regex_syntax/utf8/enum.Utf8Sequence.html\" title=\"enum regex_syntax::utf8::Utf8Sequence\">Utf8Sequence</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Span.html\" title=\"struct regex_syntax::ast::Span\">Span</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassBytesRange.html\" title=\"struct regex_syntax::hir::ClassBytesRange\">ClassBytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassUnicodeRange.html\" title=\"struct regex_syntax::hir::ClassUnicodeRange\">ClassUnicodeRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/hir/literal/struct.Literal.html\" title=\"struct regex_syntax::hir::literal::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Position.html\" title=\"struct regex_syntax::ast::Position\">Position</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"regex_syntax/utf8/struct.Utf8Range.html\" title=\"struct regex_syntax::utf8::Utf8Range\">Utf8Range</a>"]],
"smallvec":[["impl&lt;A: <a class=\"trait\" href=\"smallvec/trait.Array.html\" title=\"trait smallvec::Array\">Array</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"smallvec/struct.SmallVec.html\" title=\"struct smallvec::SmallVec\">SmallVec</a>&lt;A&gt;<div class=\"where\">where\n A::<a class=\"associatedtype\" href=\"smallvec/trait.Array.html#associatedtype.Item\" title=\"type smallvec::Array::Item\">Item</a>: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a>,</div>"]],
"syn":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"syn/struct.Lifetime.html\" title=\"struct syn::Lifetime\">Lifetime</a>"]],
"tracing_core":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"tracing_core/struct.LevelFilter.html\" title=\"struct tracing_core::LevelFilter\">LevelFilter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"tracing_core/struct.Level.html\" title=\"struct tracing_core::Level\">Level</a>"]],

File diff suppressed because one or more lines are too long

View file

@ -14,7 +14,7 @@
"object":[["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.I32Bytes.html\" title=\"struct object::endian::I32Bytes\">I32Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.I64Bytes.html\" title=\"struct object::endian::I64Bytes\">I64Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.U64Bytes.html\" title=\"struct object::endian::U64Bytes\">U64Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.U32Bytes.html\" title=\"struct object::endian::U32Bytes\">U32Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.U16Bytes.html\" title=\"struct object::endian::U16Bytes\">U16Bytes</a>&lt;E&gt;"],["impl&lt;E: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> + <a class=\"trait\" href=\"object/endian/trait.Endian.html\" title=\"trait object::endian::Endian\">Endian</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"object/endian/struct.I16Bytes.html\" title=\"struct object::endian::I16Bytes\">I16Bytes</a>&lt;E&gt;"]],
"proc_macro2":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"proc_macro2/struct.Ident.html\" title=\"struct proc_macro2::Ident\">Ident</a>"]],
"regex_automata":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.SmallIndex.html\" title=\"struct regex_automata::util::primitives::SmallIndex\">SmallIndex</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.NonMaxUsize.html\" title=\"struct regex_automata::util::primitives::NonMaxUsize\">NonMaxUsize</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.StateID.html\" title=\"struct regex_automata::util::primitives::StateID\">StateID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_automata/struct.PatternID.html\" title=\"struct regex_automata::PatternID\">PatternID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_automata/util/alphabet/struct.Unit.html\" title=\"struct regex_automata::util::alphabet::Unit\">Unit</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/utf8/struct.Utf8Range.html\" title=\"struct regex_syntax::utf8::Utf8Range\">Utf8Range</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"enum\" href=\"regex_syntax/utf8/enum.Utf8Sequence.html\" title=\"enum regex_syntax::utf8::Utf8Sequence\">Utf8Sequence</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassUnicodeRange.html\" title=\"struct regex_syntax::hir::ClassUnicodeRange\">ClassUnicodeRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Position.html\" title=\"struct regex_syntax::ast::Position\">Position</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassBytesRange.html\" title=\"struct regex_syntax::hir::ClassBytesRange\">ClassBytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/literal/struct.Literal.html\" title=\"struct regex_syntax::hir::literal::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Span.html\" title=\"struct regex_syntax::ast::Span\">Span</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"enum\" href=\"regex_syntax/utf8/enum.Utf8Sequence.html\" title=\"enum regex_syntax::utf8::Utf8Sequence\">Utf8Sequence</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassBytesRange.html\" title=\"struct regex_syntax::hir::ClassBytesRange\">ClassBytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Position.html\" title=\"struct regex_syntax::ast::Position\">Position</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Span.html\" title=\"struct regex_syntax::ast::Span\">Span</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/literal/struct.Literal.html\" title=\"struct regex_syntax::hir::literal::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.ClassUnicodeRange.html\" title=\"struct regex_syntax::hir::ClassUnicodeRange\">ClassUnicodeRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"regex_syntax/utf8/struct.Utf8Range.html\" title=\"struct regex_syntax::utf8::Utf8Range\">Utf8Range</a>"]],
"smallvec":[["impl&lt;A: <a class=\"trait\" href=\"smallvec/trait.Array.html\" title=\"trait smallvec::Array\">Array</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"smallvec/struct.SmallVec.html\" title=\"struct smallvec::SmallVec\">SmallVec</a>&lt;A&gt;<div class=\"where\">where\n A::<a class=\"associatedtype\" href=\"smallvec/trait.Array.html#associatedtype.Item\" title=\"type smallvec::Array::Item\">Item</a>: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>,</div>"]],
"syn":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"syn/buffer/struct.Cursor.html\" title=\"struct syn::buffer::Cursor\">Cursor</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"syn/struct.Lifetime.html\" title=\"struct syn::Lifetime\">Lifetime</a>"]],
"tracing_core":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"tracing_core/struct.LevelFilter.html\" title=\"struct tracing_core::LevelFilter\">LevelFilter</a>&gt; for <a class=\"struct\" href=\"tracing_core/struct.Level.html\" title=\"struct tracing_core::Level\">Level</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"tracing_core/struct.Level.html\" title=\"struct tracing_core::Level\">Level</a>&gt; for <a class=\"struct\" href=\"tracing_core/struct.LevelFilter.html\" title=\"struct tracing_core::LevelFilter\">LevelFilter</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"tracing_core/struct.Level.html\" title=\"struct tracing_core::Level\">Level</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a> for <a class=\"struct\" href=\"tracing_core/struct.LevelFilter.html\" title=\"struct tracing_core::LevelFilter\">LevelFilter</a>"]],

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -10,7 +10,7 @@
"proc_macro2":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"proc_macro2/struct.LexError.html\" title=\"struct proc_macro2::LexError\">LexError</a>"]],
"regex":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"regex/enum.Error.html\" title=\"enum regex::Error\">Error</a>"]],
"regex_automata":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/nfa/thompson/struct.BuildError.html\" title=\"struct regex_automata::nfa::thompson::BuildError\">BuildError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/struct.PatternSetInsertError.html\" title=\"struct regex_automata::PatternSetInsertError\">PatternSetInsertError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/wire/struct.DeserializeError.html\" title=\"struct regex_automata::util::wire::DeserializeError\">DeserializeError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.PatternIDError.html\" title=\"struct regex_automata::util::primitives::PatternIDError\">PatternIDError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.SmallIndexError.html\" title=\"struct regex_automata::util::primitives::SmallIndexError\">SmallIndexError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/captures/struct.GroupInfoError.html\" title=\"struct regex_automata::util::captures::GroupInfoError\">GroupInfoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/wire/struct.SerializeError.html\" title=\"struct regex_automata::util::wire::SerializeError\">SerializeError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/look/struct.UnicodeWordBoundaryError.html\" title=\"struct regex_automata::util::look::UnicodeWordBoundaryError\">UnicodeWordBoundaryError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/struct.MatchError.html\" title=\"struct regex_automata::MatchError\">MatchError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/meta/struct.BuildError.html\" title=\"struct regex_automata::meta::BuildError\">BuildError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.StateIDError.html\" title=\"struct regex_automata::util::primitives::StateIDError\">StateIDError</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Error.html\" title=\"struct regex_syntax::ast::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.CaseFoldError.html\" title=\"struct regex_syntax::hir::CaseFoldError\">CaseFoldError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/struct.UnicodeWordError.html\" title=\"struct regex_syntax::UnicodeWordError\">UnicodeWordError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Error.html\" title=\"struct regex_syntax::hir::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"regex_syntax/enum.Error.html\" title=\"enum regex_syntax::Error\">Error</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Error.html\" title=\"struct regex_syntax::ast::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"regex_syntax/enum.Error.html\" title=\"enum regex_syntax::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Error.html\" title=\"struct regex_syntax::hir::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.CaseFoldError.html\" title=\"struct regex_syntax::hir::CaseFoldError\">CaseFoldError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"regex_syntax/struct.UnicodeWordError.html\" title=\"struct regex_syntax::UnicodeWordError\">UnicodeWordError</a>"]],
"strsim":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"strsim/enum.StrSimError.html\" title=\"enum strsim::StrSimError\">StrSimError</a>"]],
"syn":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"syn/parse/struct.Error.html\" title=\"struct syn::parse::Error\">Error</a>"]],
"tracing_core":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tracing_core/dispatcher/struct.SetGlobalDefaultError.html\" title=\"struct tracing_core::dispatcher::SetGlobalDefaultError\">SetGlobalDefaultError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tracing_core/metadata/struct.ParseLevelError.html\" title=\"struct tracing_core::metadata::ParseLevelError\">ParseLevelError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"struct\" href=\"tracing_core/metadata/struct.ParseLevelFilterError.html\" title=\"struct tracing_core::metadata::ParseLevelFilterError\">ParseLevelFilterError</a>"]],

File diff suppressed because one or more lines are too long

View file

@ -22,7 +22,7 @@
"proc_macro2":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.TokenStream.html\" title=\"struct proc_macro2::TokenStream\">TokenStream</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.Ident.html\" title=\"struct proc_macro2::Ident\">Ident</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.Literal.html\" title=\"struct proc_macro2::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.Group.html\" title=\"struct proc_macro2::Group\">Group</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"proc_macro2/enum.TokenTree.html\" title=\"enum proc_macro2::TokenTree\">TokenTree</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.LexError.html\" title=\"struct proc_macro2::LexError\">LexError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"proc_macro2/struct.Punct.html\" title=\"struct proc_macro2::Punct\">Punct</a>"]],
"regex":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex/enum.Error.html\" title=\"enum regex::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex/bytes/struct.Regex.html\" title=\"struct regex::bytes::Regex\">Regex</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex/struct.Regex.html\" title=\"struct regex::Regex\">Regex</a>"]],
"regex_automata":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/nfa/thompson/struct.BuildError.html\" title=\"struct regex_automata::nfa::thompson::BuildError\">BuildError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/struct.MatchError.html\" title=\"struct regex_automata::MatchError\">MatchError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/meta/struct.BuildError.html\" title=\"struct regex_automata::meta::BuildError\">BuildError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/struct.PatternSetInsertError.html\" title=\"struct regex_automata::PatternSetInsertError\">PatternSetInsertError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.StateIDError.html\" title=\"struct regex_automata::util::primitives::StateIDError\">StateIDError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/wire/struct.DeserializeError.html\" title=\"struct regex_automata::util::wire::DeserializeError\">DeserializeError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/wire/struct.SerializeError.html\" title=\"struct regex_automata::util::wire::SerializeError\">SerializeError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/look/struct.UnicodeWordBoundaryError.html\" title=\"struct regex_automata::util::look::UnicodeWordBoundaryError\">UnicodeWordBoundaryError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/captures/struct.GroupInfoError.html\" title=\"struct regex_automata::util::captures::GroupInfoError\">GroupInfoError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.PatternIDError.html\" title=\"struct regex_automata::util::primitives::PatternIDError\">PatternIDError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_automata/util/primitives/struct.SmallIndexError.html\" title=\"struct regex_automata::util::primitives::SmallIndexError\">SmallIndexError</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.ErrorKind.html\" title=\"enum regex_syntax::ast::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.Ast.html\" title=\"enum regex_syntax::ast::Ast\">Ast</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.CaseFoldError.html\" title=\"struct regex_syntax::hir::CaseFoldError\">CaseFoldError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/struct.UnicodeWordError.html\" title=\"struct regex_syntax::UnicodeWordError\">UnicodeWordError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/hir/enum.ErrorKind.html\" title=\"enum regex_syntax::hir::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/enum.Error.html\" title=\"enum regex_syntax::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Error.html\" title=\"struct regex_syntax::ast::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Error.html\" title=\"struct regex_syntax::hir::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Hir.html\" title=\"struct regex_syntax::hir::Hir\">Hir</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/enum.Error.html\" title=\"enum regex_syntax::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/ast/struct.Error.html\" title=\"struct regex_syntax::ast::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/struct.UnicodeWordError.html\" title=\"struct regex_syntax::UnicodeWordError\">UnicodeWordError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.Ast.html\" title=\"enum regex_syntax::ast::Ast\">Ast</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/hir/enum.ErrorKind.html\" title=\"enum regex_syntax::hir::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.ErrorKind.html\" title=\"enum regex_syntax::ast::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Hir.html\" title=\"struct regex_syntax::hir::Hir\">Hir</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.CaseFoldError.html\" title=\"struct regex_syntax::hir::CaseFoldError\">CaseFoldError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Error.html\" title=\"struct regex_syntax::hir::Error\">Error</a>"]],
"rustc_demangle":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"rustc_demangle/struct.Demangle.html\" title=\"struct rustc_demangle::Demangle\">Demangle</a>&lt;'a&gt;"]],
"smallvec":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"smallvec/enum.CollectionAllocErr.html\" title=\"enum smallvec::CollectionAllocErr\">CollectionAllocErr</a>"]],
"strsim":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"strsim/enum.StrSimError.html\" title=\"enum strsim::StrSimError\">StrSimError</a>"]],

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -5,7 +5,7 @@
"inkwell":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/targets/struct.TargetMachine.html\" title=\"struct inkwell::targets::TargetMachine\">TargetMachine</a>"],["impl&lt;'ctx&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/debug_info/struct.DebugInfoBuilder.html\" title=\"struct inkwell::debug_info::DebugInfoBuilder\">DebugInfoBuilder</a>&lt;'ctx&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/execution_engine/struct.ExecutionEngine.html\" title=\"struct inkwell::execution_engine::ExecutionEngine\">ExecutionEngine</a>&lt;'_&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/context/struct.Context.html\" title=\"struct inkwell::context::Context\">Context</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/builder/struct.Builder.html\" title=\"struct inkwell::builder::Builder\">Builder</a>&lt;'_&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/object_file/struct.ObjectFile.html\" title=\"struct inkwell::object_file::ObjectFile\">ObjectFile</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/module/struct.Module.html\" title=\"struct inkwell::module::Module\">Module</a>&lt;'_&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/passes/struct.PassBuilderOptions.html\" title=\"struct inkwell::passes::PassBuilderOptions\">PassBuilderOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/support/struct.LLVMString.html\" title=\"struct inkwell::support::LLVMString\">LLVMString</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/object_file/struct.SectionIterator.html\" title=\"struct inkwell::object_file::SectionIterator\">SectionIterator</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/targets/struct.TargetData.html\" title=\"struct inkwell::targets::TargetData\">TargetData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/object_file/struct.RelocationIterator.html\" title=\"struct inkwell::object_file::RelocationIterator\">RelocationIterator</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/memory_buffer/struct.MemoryBuffer.html\" title=\"struct inkwell::memory_buffer::MemoryBuffer\">MemoryBuffer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/values/struct.GenericValue.html\" title=\"struct inkwell::values::GenericValue\">GenericValue</a>&lt;'_&gt;"],["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/passes/struct.PassManager.html\" title=\"struct inkwell::passes::PassManager\">PassManager</a>&lt;T&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"inkwell/object_file/struct.SymbolIterator.html\" title=\"struct inkwell::object_file::SymbolIterator\">SymbolIterator</a>"]],
"itertools":[["impl&lt;'a, I&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"itertools/structs/struct.Chunk.html\" title=\"struct itertools::structs::Chunk\">Chunk</a>&lt;'a, I&gt;<div class=\"where\">where\n I: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>,\n I::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/1.76.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" title=\"type core::iter::traits::iterator::Iterator::Item\">Item</a>: 'a,</div>"],["impl&lt;'a, K, I, F&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"itertools/structs/struct.Group.html\" title=\"struct itertools::structs::Group\">Group</a>&lt;'a, K, I, F&gt;<div class=\"where\">where\n I: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a>,\n I::<a class=\"associatedtype\" href=\"https://doc.rust-lang.org/1.76.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" title=\"type core::iter::traits::iterator::Iterator::Item\">Item</a>: 'a,</div>"]],
"once_cell":[["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"once_cell/race/struct.OnceBox.html\" title=\"struct once_cell::race::OnceBox\">OnceBox</a>&lt;T&gt;"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Hir.html\" title=\"struct regex_syntax::hir::Hir\">Hir</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.Ast.html\" title=\"enum regex_syntax::ast::Ast\">Ast</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.ClassSet.html\" title=\"enum regex_syntax::ast::ClassSet\">ClassSet</a>"]],
"regex_syntax":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.ClassSet.html\" title=\"enum regex_syntax::ast::ClassSet\">ClassSet</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"regex_syntax/hir/struct.Hir.html\" title=\"struct regex_syntax::hir::Hir\">Hir</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"enum\" href=\"regex_syntax/ast/enum.Ast.html\" title=\"enum regex_syntax::ast::Ast\">Ast</a>"]],
"sharded_slab":[["impl&lt;T, C&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/pool/struct.OwnedRef.html\" title=\"struct sharded_slab::pool::OwnedRef\">OwnedRef</a>&lt;T, C&gt;<div class=\"where\">where\n T: <a class=\"trait\" href=\"sharded_slab/trait.Clear.html\" title=\"trait sharded_slab::Clear\">Clear</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,\n C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>,</div>"],["impl&lt;'a, T, C&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/pool/struct.RefMut.html\" title=\"struct sharded_slab::pool::RefMut\">RefMut</a>&lt;'a, T, C&gt;<div class=\"where\">where\n T: <a class=\"trait\" href=\"sharded_slab/trait.Clear.html\" title=\"trait sharded_slab::Clear\">Clear</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,\n C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>,</div>"],["impl&lt;T, C&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/struct.OwnedEntry.html\" title=\"struct sharded_slab::OwnedEntry\">OwnedEntry</a>&lt;T, C&gt;<div class=\"where\">where\n C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>,</div>"],["impl&lt;T, C&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/pool/struct.OwnedRefMut.html\" title=\"struct sharded_slab::pool::OwnedRefMut\">OwnedRefMut</a>&lt;T, C&gt;<div class=\"where\">where\n T: <a class=\"trait\" href=\"sharded_slab/trait.Clear.html\" title=\"trait sharded_slab::Clear\">Clear</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,\n C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>,</div>"],["impl&lt;'a, T, C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/struct.Entry.html\" title=\"struct sharded_slab::Entry\">Entry</a>&lt;'a, T, C&gt;"],["impl&lt;'a, T, C&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"sharded_slab/pool/struct.Ref.html\" title=\"struct sharded_slab::pool::Ref\">Ref</a>&lt;'a, T, C&gt;<div class=\"where\">where\n T: <a class=\"trait\" href=\"sharded_slab/trait.Clear.html\" title=\"trait sharded_slab::Clear\">Clear</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>,\n C: <a class=\"trait\" href=\"sharded_slab/trait.Config.html\" title=\"trait sharded_slab::Config\">Config</a>,</div>"]],
"smallvec":[["impl&lt;A: <a class=\"trait\" href=\"smallvec/trait.Array.html\" title=\"trait smallvec::Array\">Array</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"smallvec/struct.SmallVec.html\" title=\"struct smallvec::SmallVec\">SmallVec</a>&lt;A&gt;"],["impl&lt;A: <a class=\"trait\" href=\"smallvec/trait.Array.html\" title=\"trait smallvec::Array\">Array</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"smallvec/struct.IntoIter.html\" title=\"struct smallvec::IntoIter\">IntoIter</a>&lt;A&gt;"],["impl&lt;'a, T: 'a + <a class=\"trait\" href=\"smallvec/trait.Array.html\" title=\"trait smallvec::Array\">Array</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"smallvec/struct.Drain.html\" title=\"struct smallvec::Drain\">Drain</a>&lt;'a, T&gt;"]],
"syn":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.76.0/core/ops/drop/trait.Drop.html\" title=\"trait core::ops::drop::Drop\">Drop</a> for <a class=\"struct\" href=\"syn/parse/struct.ParseBuffer.html\" title=\"struct syn::parse::ParseBuffer\">ParseBuffer</a>&lt;'a&gt;"]],