<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="A wrapper around a function pointer which ensures the function being pointed to doesn’t accidentally outlive its execution engine."><title>JitFunction in inkwell::execution_engine - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../../static.files/rustdoc-5bc39a1768837dd0.css"><metaname="rustdoc-vars"data-root-path="../../"data-static-root-path="../../static.files/"data-current-crate="inkwell"data-themes=""data-resource-suffix=""data-rustdoc-version="1.77.1 (7cf61ebde 2024-03-27)"data-channel="1.77.1"data-search-js="search-dd67cee4cfa65049.js"data-settings-js="settings-4313503d2e1961c2.js"><scriptsrc="../../static.files/storage-4c98445ec4002617.js"></script><scriptdefersrc="sidebar-items.js"></script><scriptdefersrc="../../static.files/main-48f368f3872407c8.js"></script><noscript><linkrel="stylesheet"href="../../static.files/noscript-04d5337699b92874.css"></noscript><linkrel="alternate icon"type="image/png"href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle"title="show sidebar"></button></nav><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../../inkwell/index.html">inkwell</a><spanclass="version">0.4.0</span></h2></div><h2class="location"><ahref="#">JitFunction</a></h2><divclass="sidebar-elems"><section><h3><ahref="#implementations">Methods</a></h3><ulclass="block method"><li><ahref="#method.as_raw">as_raw</a></li><li><ahref="#method.call">call</a></li><li><ahref="#method.call-1">call</a></li><li><ahref="#method.call-10">call</a></li><li><ahref="#method.call-11">call</a></li><li><ahref="#method.call-12">call</a></li><li><ahref="#method.call-13">call</a></li><li><ahref="#method.call-2">call</a></li><li><ahref="#method.call-3">call</a></li><li><ahref="#method.call-4">call</a></li><li><ahref="#method.call-5">call</a></li><li><ahref="#method.call-6">call</a></li><li><ahref="#method.call-7">call</a></li><li><ahref="#method.call-8">call</a></li><li><ahref="#method.call-9">call</a></li><li><ahref="#method.into_raw">into_raw</a></li></ul><h3><ahref="#trait-implementations">Trait Implementations</a></h3><ulclass="block trait-implementation"><li><ahref="#impl-Clone-for-JitFunction%3C'ctx,+F%3E">Clone</a></li><li><ahref="#impl-Debug-for-JitFunction%3C'_,+F%3E">Debug</a></li></ul><h3><ahref="#synthetic-implementations">Auto Trait Implementations</a></h3><ulclass="block synthetic-implementation"><li><ahref="#impl-Send-for-JitFunction%3C'ctx,+F%3E">!Send</a></li><li><ahref="#impl-Sync-for-JitFunction%3C'ctx,+F%3E">!Sync</a></li><li><ahref="#impl-RefUnwindSafe-for-JitFunction%3C'ctx,+F%3E">RefUnwindSafe</a></li><li><ahref="#impl-Unpin-for-JitFunction%3C'ctx,+F%3E">Unpin</a></li><li><ahref="#impl-UnwindSafe-for-JitFunction
<main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><divid="sidebar-button"tabindex="-1"><ahref="../../inkwell/all.html"title="show sidebar"></a></div><inputclass="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"><divid="help-button"tabindex="-1"><ahref="../../help.html"title="help">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Struct <ahref="../index.html">inkwell</a>::<wbr><ahref="index.html">execution_engine</a>::<wbr><aclass="struct"href="#">JitFunction</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="src"href="../../src/inkwell/execution_engine.rs.html#485-488">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><preclass="rust item-decl"><code>pub struct JitFunction<'ctx, F> { <spanclass="comment">/* private fields */</span> }</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>A wrapper around a function pointer which ensures the function being pointed
to doesn’t accidentally outlive its execution engine.</p>
</div></details><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'ctx,+F%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#490-506">source</a><ahref="#impl-JitFunction%3C'ctx,+F%3E"class="anchor">§</a><h3class="code-header">impl<'ctx, F: <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/marker/trait.Copy.html"title="trait core::marker::Copy">Copy</a>><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'ctx, F></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.into_raw"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#495-497">source</a><h4class="code-header">pub unsafe fn <ahref="#method.into_raw"class="fn">into_raw</a>(self) -> F</h4></section></summary><divclass="docblock"><p>Returns the raw function pointer, consuming self in the process.
This function is unsafe because the function pointer may dangle
if the ExecutionEngine it came from is dropped. The caller is
thus responsible for ensuring the ExecutionEngine remains valid.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.as_raw"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#503-505">source</a><h4class="code-header">pub unsafe fn <ahref="#method.as_raw"class="fn">as_raw</a>(&self) -> F</h4></section></summary><divclass="docblock"><p>Returns the raw function pointer.
This function is unsafe because the function pointer may dangle
if the ExecutionEngine it came from is dropped. The caller is
thus responsible for ensuring the ExecutionEngine remains valid.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(H,+I,+J,+K,+L,+M)+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(H,+I,+J,+K,+L,+M)+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output, H, I, J, K, L, M><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>(_: H, _: I, _: J, _: K, _: L, _: M) -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-7"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-7"class="fn">call</a>(&self, H: H, I: I, J: J, K: K, L: L, M: M) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(I,+J,+K,+L,+M)+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(I,+J,+K,+L,+M)+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output, I, J, K, L, M><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>(_: I, _: J, _: K, _: L, _: M) -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-8"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-8"class="fn">call</a>(&self, I: I, J: J, K: K, L: L, M: M) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(K,+L,+M)+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(K,+L,+M)+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output, K, L, M><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>(_: K, _: L, _: M) -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-10"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-10"class="fn">call</a>(&self, K: K, L: L, M: M) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(L,+M)+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(L,+M)+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output, L, M><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>(_: L, _: M) -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-11"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-11"class="fn">call</a>(&self, L: L, M: M) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(M)+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn(M)+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output, M><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>(_: M) -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-12"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-12"class="fn">call</a>(&self, M: M) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
</div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn()+-%3E+Output%3E"class="impl"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><ahref="#impl-JitFunction%3C'_,+unsafe+extern+%22C%22+fn()+-%3E+Output%3E"class="anchor">§</a><h3class="code-header">impl<Output><aclass="struct"href="struct.JitFunction.html"title="struct inkwell::execution_engine::JitFunction">JitFunction</a><'_, unsafe extern "C"<aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.fn.html">fn</a>() -> Output></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.call-13"class="method"><aclass="src rightside"href="../../src/inkwell/execution_engine.rs.html#552">source</a><h4class="code-header">pub unsafe fn <ahref="#method.call-13"class="fn">call</a>(&self) -> Output</h4></section></summary><divclass="docblock"><p>This method allows you to call the underlying function while making
<code><ahref="https://doc.rust-lang.org/1.77.1/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-ToOwned-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/alloc/borrow.rs.html#83-85">source</a><ahref="#impl-ToOwned-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html"title="trait alloc::borrow::ToOwned">ToOwned</a> for T<divclass="where">where
T: <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/clone/trait.Clone.html"title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Owned"class="associatedtype trait-impl"><ahref="#associatedtype.Owned"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html#associatedtype.Owned"class="associatedtype">Owned</a> = T</h4></section></summary><divclass='docblock'>The resulting type after obtaining ownership.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.to_owned"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/alloc/borrow.rs.html#88">source</a><ahref="#method.to_owned"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html#tymethod.to_owned"class="fn">to_owned</a>(&self) -> T</h4></section></summary><divclass='docblock'>Creates owned data from borrowed data, usually by cloning. <ahref="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.clone_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/alloc/borrow.rs.html#92">source</a><ahref="#method.clone_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html#method.clone_into"class="fn">clone_into</a>(&self, target: <aclass="primitive"href="https://doc.rust-lang.org/1.77.1/std/primitive.reference.html">&mut T</a>)</h4></section></summary><divclass='docblock'>Uses borrowed data to replace owned data, usually by cloning. <ahref="https://doc.rust-lang.org/1.77.1/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryFrom%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/core/convert/mod.rs.html#804-806">source</a><ahref="#impl-TryFrom%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error-1"class="associatedtype trait-impl"><ahref="#associatedtype.Error-1"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html#associatedtype.Error"class="associatedtype">Error</a> = <aclass="enum"href="https://doc.rust-lang.org/1.77.1/core/convert/enum.Infallible.html"title="enum core::convert::Infallible">Infallible</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/core/convert/mod.rs.html#811">source</a><ahref="#method.try_from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html#tymethod.try_from"class="fn">try_from</a>(value: U) -><aclass="enum"href="https://doc.rust-lang.org/1.77.1/core/result/enum.Result.html"title="enum core::result::Result">Result</a><T, <T as <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryInto%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/core/convert/mod.rs.html#789-791">source</a><ahref="#impl-TryInto%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryInto.html"title="trait core::convert::TryInto">TryInto</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error"class="associatedtype trait-impl"><ahref="#associatedtype.Error"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryInto.html#associatedtype.Error"class="associatedtype">Error</a> = <U as <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.1/src/core/convert/mod.rs.html#796">source</a><ahref="#method.try_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryInto.html#tymethod.try_into"class="fn">try_into</a>(self) -><aclass="enum"href="https://doc.rust-lang.org/1.77.1/core/result/enum.Result.html"title="enum core::result::Result">Result</a><U, <U as <aclass="trait"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.1/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>