blob: 35ee5e249e3dc04d9302237b4cbdf1acc01b56b0 [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A default batteries included `transport` server."><meta name="keywords" content="rust, rustlang, rust-lang, Server"><title>Server in teaclave_rpc::transport - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../teaclave_rpc/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../teaclave_rpc/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Server</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.accept_http1">accept_http1</a></li><li><a href="#method.add_optional_service">add_optional_service</a></li><li><a href="#method.add_service">add_service</a></li><li><a href="#method.builder">builder</a></li><li><a href="#method.concurrency_limit_per_connection">concurrency_limit_per_connection</a></li><li><a href="#method.http2_keepalive_interval">http2_keepalive_interval</a></li><li><a href="#method.http2_keepalive_timeout">http2_keepalive_timeout</a></li><li><a href="#method.initial_connection_window_size">initial_connection_window_size</a></li><li><a href="#method.initial_stream_window_size">initial_stream_window_size</a></li><li><a href="#method.layer">layer</a></li><li><a href="#method.max_concurrent_streams">max_concurrent_streams</a></li><li><a href="#method.max_frame_size">max_frame_size</a></li><li><a href="#method.tcp_keepalive">tcp_keepalive</a></li><li><a href="#method.tcp_nodelay">tcp_nodelay</a></li><li><a href="#method.timeout">timeout</a></li><li><a href="#method.tls_config">tls_config</a></li><li><a href="#method.trace_fn">trace_fn</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Server%3CL%3E">Clone</a></li><li><a href="#impl-Debug-for-Server%3CL%3E">Debug</a></li><li><a href="#impl-Default-for-Server%3CL%3E">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Server%3CL%3E">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Server%3CL%3E">Send</a></li><li><a href="#impl-Sync-for-Server%3CL%3E">Sync</a></li><li><a href="#impl-Unpin-for-Server%3CL%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Server%3CL%3E">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Server%3CL%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Server%3CL%3E">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Server%3CL%3E">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Server%3CL%3E">From&lt;T&gt;</a></li><li><a href="#impl-Instrument-for-Server%3CL%3E">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-Server%3CL%3E">Into&lt;U&gt;</a></li><li><a href="#impl-IntoRequest%3CT%3E-for-Server%3CL%3E">IntoRequest&lt;T&gt;</a></li><li><a href="#impl-ToOwned-for-Server%3CL%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Server%3CL%3E">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Server%3CL%3E">TryInto&lt;U&gt;</a></li><li><a href="#impl-VZip%3CV%3E-for-Server%3CL%3E">VZip&lt;V&gt;</a></li><li><a href="#impl-WithSubscriber-for-Server%3CL%3E">WithSubscriber</a></li></ul></section><h2><a href="index.html">In teaclave_rpc::transport</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">teaclave_rpc</a>::<wbr><a href="index.html">transport</a>::<wbr><a class="struct" href="#">Server</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/tonic/transport/server/mod.rs.html#72">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Server&lt;L&nbsp;=&nbsp;<a class="struct" href="../../tower_layer/identity/struct.Identity.html" title="struct tower_layer::identity::Identity">Identity</a>&gt; { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A default batteries included <code>transport</code> server.</p>
<p>This is a wrapper around [<code>hyper::Server</code>] and provides an easy builder
pattern style builder <a href="struct.Server.html" title="Server"><code>Server</code></a>. This builder exposes easy configuration parameters
for providing a fully featured http2 based gRPC server. This should provide
a very good out of the box http2 server for use with tonic but is also a
reference implementation that should be a good starting point for anyone
wanting to create a more complex and/or specific implementation.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Server%3CIdentity%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#142">source</a><a href="#impl-Server%3CIdentity%3E" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;<a class="struct" href="../../tower_layer/identity/struct.Identity.html" title="struct tower_layer::identity::Identity">Identity</a>&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.builder" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#144">source</a><h4 class="code-header">pub fn <a href="#method.builder" class="fnname">builder</a>() -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;<a class="struct" href="../../tower_layer/identity/struct.Identity.html" title="struct tower_layer::identity::Identity">Identity</a>&gt;</h4></section></summary><div class="docblock"><p>Create a new server builder that can configure a <a href="struct.Server.html" title="Server"><code>Server</code></a>.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#153">source</a><a href="#impl-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.tls_config" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#157">source</a><h4 class="code-header">pub fn <a href="#method.tls_config" class="fnname">tls_config</a>(self, tls_config: <a class="struct" href="struct.ServerTlsConfig.html" title="struct teaclave_rpc::transport::ServerTlsConfig">ServerTlsConfig</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;, <a class="struct" href="struct.Error.html" title="struct teaclave_rpc::transport::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Configure TLS for this server.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.concurrency_limit_per_connection" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#174">source</a><h4 class="code-header">pub fn <a href="#method.concurrency_limit_per_connection" class="fnname">concurrency_limit_per_connection</a>(self, limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Set the concurrency limit applied to on requests inbound per connection.</p>
<h5 id="example"><a href="#example">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>builder.concurrency_limit_per_connection(<span class="number">32</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.timeout" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#192">source</a><h4 class="code-header">pub fn <a href="#method.timeout" class="fnname">timeout</a>(&amp;mut self, timeout: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; &amp;mut <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Set a timeout on for all request handlers.</p>
<h5 id="example-1"><a href="#example-1">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>builder.timeout(Duration::from_secs(<span class="number">30</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.initial_stream_window_size" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#203">source</a><h4 class="code-header">pub fn <a href="#method.initial_stream_window_size" class="fnname">initial_stream_window_size</a>(self, sz: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Sets the <a href="https://http2.github.io/http2-spec/#SETTINGS_INITIAL_WINDOW_SIZE"><code>SETTINGS_INITIAL_WINDOW_SIZE</code></a> option for HTTP2
stream-level flow control.</p>
<p>Default is 65,535</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.initial_connection_window_size" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#213">source</a><h4 class="code-header">pub fn <a href="#method.initial_connection_window_size" class="fnname">initial_connection_window_size</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;sz: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;<br>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Sets the max connection-level flow control for HTTP2</p>
<p>Default is 65,535</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_concurrent_streams" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#226">source</a><h4 class="code-header">pub fn <a href="#method.max_concurrent_streams" class="fnname">max_concurrent_streams</a>(self, max: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Sets the <a href="https://http2.github.io/http2-spec/#SETTINGS_MAX_CONCURRENT_STREAMS"><code>SETTINGS_MAX_CONCURRENT_STREAMS</code></a> option for HTTP2
connections.</p>
<p>Default is no limit (<code>None</code>).</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.http2_keepalive_interval" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#242">source</a><h4 class="code-header">pub fn <a href="#method.http2_keepalive_interval" class="fnname">http2_keepalive_interval</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;http2_keepalive_interval: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;<br>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Set whether HTTP2 Ping frames are enabled on accepted connections.</p>
<p>If <code>None</code> is specified, HTTP2 keepalive is disabled, otherwise the duration
specified will be the time interval between HTTP2 Ping frames.
The timeout for receiving an acknowledgement of the keepalive ping
can be set with <a href="struct.Server.html#method.http2_keepalive_timeout" title="Server::http2_keepalive_timeout"><code>Server::http2_keepalive_timeout</code></a>.</p>
<p>Default is no HTTP2 keepalive (<code>None</code>)</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.http2_keepalive_timeout" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#256">source</a><h4 class="code-header">pub fn <a href="#method.http2_keepalive_timeout" class="fnname">http2_keepalive_timeout</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;http2_keepalive_timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;<br>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Sets a timeout for receiving an acknowledgement of the keepalive ping.</p>
<p>If the ping is not acknowledged within the timeout, the connection will be closed.
Does nothing if http2_keep_alive_interval is disabled.</p>
<p>Default is 20 seconds.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.tcp_keepalive" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#271">source</a><h4 class="code-header">pub fn <a href="#method.tcp_keepalive" class="fnname">tcp_keepalive</a>(self, tcp_keepalive: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Set whether TCP keepalive messages are enabled on accepted connections.</p>
<p>If <code>None</code> is specified, keepalive is disabled, otherwise the duration
specified will be the time to remain idle before sending TCP keepalive
probes.</p>
<p>Default is no keepalive (<code>None</code>)</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.tcp_nodelay" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#279">source</a><h4 class="code-header">pub fn <a href="#method.tcp_nodelay" class="fnname">tcp_nodelay</a>(self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Set the value of <code>TCP_NODELAY</code> option for accepted connections. Enabled by default.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_frame_size" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#291">source</a><h4 class="code-header">pub fn <a href="#method.max_frame_size" class="fnname">max_frame_size</a>(self, frame_size: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt;&gt;) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Sets the maximum frame size to use for HTTP2.</p>
<p>Passing <code>None</code> will do nothing.</p>
<p>If not set, will default from underlying transport.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.accept_http1" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#306">source</a><h4 class="code-header">pub fn <a href="#method.accept_http1" class="fnname">accept_http1</a>(self, accept_http1: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class="docblock"><p>Allow this server to accept http1 requests.</p>
<p>Accepting http1 requests is only useful when developing <code>grpc-web</code>
enabled services. If this setting is set to <code>true</code> but services are
not correctly configured to handle grpc-web requests, your server may
return confusing (but correct) protocol errors.</p>
<p>Default is <code>false</code>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.trace_fn" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#314-316">source</a><h4 class="code-header">pub fn <a href="#method.trace_fn" class="fnname">trace_fn</a>&lt;F&gt;(self, f: F) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;) -&gt; <a class="struct" href="../../tracing/span/struct.Span.html" title="struct tracing::span::Span">Span</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h4></section></summary><div class="docblock"><p>Intercept inbound headers and add a [<code>tracing::Span</code>] to each response future.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_service" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#328-337">source</a><h4 class="code-header">pub fn <a href="#method.add_service" class="fnname">add_service</a>&lt;S&gt;(&amp;mut self, svc: S) -&gt; <a class="struct" href="server/struct.Router.html" title="struct teaclave_rpc::transport::server::Router">Router</a>&lt;S, Unimplemented, L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: 'static + <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;, Response = <a class="struct" href="../../http/response/struct.Response.html" title="struct http::response::Response">Response</a>&lt;<a class="struct" href="../../http_body/combinators/box_body/struct.UnsyncBoxBody.html" title="struct http_body::combinators::box_body::UnsyncBoxBody">UnsyncBoxBody</a>&lt;<a class="struct" href="../../bytes/bytes/struct.Bytes.html" title="struct bytes::bytes::Bytes">Bytes</a>, <a class="struct" href="../struct.Status.html" title="struct teaclave_rpc::Status">Status</a>&gt;&gt;&gt; + <a class="trait" href="trait.NamedService.html" title="trait teaclave_rpc::transport::NamedService">NamedService</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;S as <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;&gt;&gt;::<a class="associatedtype" href="../../tower_service/trait.Service.html#associatedtype.Future" title="type tower_service::Service::Future">Future</a>: 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;S as <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;&gt;&gt;::<a class="associatedtype" href="../../tower_service/trait.Service.html#associatedtype.Error" title="type tower_service::Service::Error">Error</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h4></section></summary><div class="docblock"><p>Create a router with the <code>S</code> typed service as the first service.</p>
<p>This will clone the <code>Server</code> builder and create a router that will
route around different services.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_optional_service" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#350-362">source</a><h4 class="code-header">pub fn <a href="#method.add_optional_service" class="fnname">add_optional_service</a>&lt;S&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;svc: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;S&gt;<br>) -&gt; <a class="struct" href="server/struct.Router.html" title="struct teaclave_rpc::transport::server::Router">Router</a>&lt;<a class="enum" href="../../tower/util/either/enum.Either.html" title="enum tower::util::either::Either">Either</a>&lt;S, Unimplemented&gt;, Unimplemented, L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: 'static + <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;, Response = <a class="struct" href="../../http/response/struct.Response.html" title="struct http::response::Response">Response</a>&lt;<a class="struct" href="../../http_body/combinators/box_body/struct.UnsyncBoxBody.html" title="struct http_body::combinators::box_body::UnsyncBoxBody">UnsyncBoxBody</a>&lt;<a class="struct" href="../../bytes/bytes/struct.Bytes.html" title="struct bytes::bytes::Bytes">Bytes</a>, <a class="struct" href="../struct.Status.html" title="struct teaclave_rpc::Status">Status</a>&gt;&gt;&gt; + <a class="trait" href="trait.NamedService.html" title="trait teaclave_rpc::transport::NamedService">NamedService</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;S as <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;&gt;&gt;::<a class="associatedtype" href="../../tower_service/trait.Service.html#associatedtype.Future" title="type tower_service::Service::Future">Future</a>: 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;S as <a class="trait" href="../../tower_service/trait.Service.html" title="trait tower_service::Service">Service</a>&lt;<a class="struct" href="../../http/request/struct.Request.html" title="struct http::request::Request">Request</a>&lt;<a class="struct" href="struct.Body.html" title="struct teaclave_rpc::transport::Body">Body</a>&gt;&gt;&gt;::<a class="associatedtype" href="../../tower_service/trait.Service.html#associatedtype.Error" title="type tower_service::Service::Error">Error</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h4></section></summary><div class="docblock"><p>Create a router with the optional <code>S</code> typed service as the first service.</p>
<p>This will clone the <code>Server</code> builder and create a router that will
route around different services.</p>
<h5 id="note"><a href="#note">Note</a></h5>
<p>Even when the argument given is <code>None</code> this will capture <em>all</em> requests to this service name.
As a result, one cannot use this to toggle between two identically named implementations.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.layer" class="method has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#432">source</a><h4 class="code-header">pub fn <a href="#method.layer" class="fnname">layer</a>&lt;NewLayer&gt;(self, new_layer: NewLayer) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;NewLayer&gt;</h4></section></summary><div class="docblock"><p>Set the <a href="https://github.com/tower-rs/tower">Tower</a> <a href="tower::layer::Layer"><code>Layer</code></a> all services will be wrapped in.</p>
<p>This enables using middleware from the <a href="https://github.com/tower-rs">Tower ecosystem</a>.</p>
<h5 id="example-2"><a href="#example-2">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tower::timeout::TimeoutLayer;
<span class="kw">use </span>std::time::Duration;
builder.layer(TimeoutLayer::new(Duration::from_secs(<span class="number">30</span>)));</code></pre></div>
<p>Note that timeouts should be set using <a href="struct.Server.html#method.timeout" title="Server::timeout"><code>Server::timeout</code></a>. <code>TimeoutLayer</code> is only used
here as an example.</p>
<p>You can build more complex layers using <a href="tower::ServiceBuilder"><code>ServiceBuilder</code></a>. Those layers can include
<a href="../../tonic/service/interceptor/trait.Interceptor.html">interceptors</a>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tower::ServiceBuilder;
<span class="kw">use </span>std::time::Duration;
<span class="kw">use </span>tonic::{Request, Status, service::interceptor};
<span class="kw">fn </span>auth_interceptor(request: Request&lt;()&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;Request&lt;()&gt;, Status&gt; {
<span class="kw">if </span>valid_credentials(<span class="kw-2">&amp;</span>request) {
<span class="prelude-val">Ok</span>(request)
} <span class="kw">else </span>{
<span class="prelude-val">Err</span>(Status::unauthenticated(<span class="string">&quot;invalid credentials&quot;</span>))
}
}
<span class="kw">fn </span>valid_credentials(request: <span class="kw-2">&amp;</span>Request&lt;()&gt;) -&gt; bool {
<span class="comment">// ...
</span>}
<span class="kw">fn </span>some_other_interceptor(request: Request&lt;()&gt;) -&gt; <span class="prelude-ty">Result</span>&lt;Request&lt;()&gt;, Status&gt; {
<span class="prelude-val">Ok</span>(request)
}
<span class="kw">let </span>layer = ServiceBuilder::new()
.load_shed()
.timeout(Duration::from_secs(<span class="number">30</span>))
.layer(interceptor(auth_interceptor))
.layer(interceptor(some_other_interceptor))
.into_inner();
Server::builder().layer(layer);</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#71">source</a><a href="#impl-Clone-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#71">source</a><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">const fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#751">source</a><a href="#impl-Debug-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#752">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#71">source</a><a href="#impl-Default-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tonic/transport/server/mod.rs.html#71">source</a><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -&gt; <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Server%3CL%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&nbsp;=&nbsp;<a class="struct" href="../../tower_layer/identity/struct.Identity.html" title="struct tower_layer::identity::Identity">Identity</a>&gt; !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h3></section><section id="impl-Send-for-Server%3CL%3E" class="impl has-srclink"><a href="#impl-Send-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-Server%3CL%3E" class="impl has-srclink"><a href="#impl-Sync-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-Server%3CL%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;L: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</span></h3></section><section id="impl-UnwindSafe-for-Server%3CL%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;L&nbsp;=&nbsp;<a class="struct" href="../../tower_layer/identity/struct.Identity.html" title="struct tower_layer::identity::Identity">Identity</a>&gt; !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Server.html" title="struct teaclave_rpc::transport::Server">Server</a>&lt;L&gt;</h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Instrument-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#276">source</a><a href="#impl-Instrument-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../../tracing/instrument/trait.Instrument.html" title="trait tracing::instrument::Instrument">Instrument</a> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#82">source</a><a href="#method.instrument" class="anchor"></a><h4 class="code-header">fn <a href="../../tracing/instrument/trait.Instrument.html#method.instrument" class="fnname">instrument</a>(self, span: <a class="struct" href="../../tracing/span/struct.Span.html" title="struct tracing::span::Span">Span</a>) -&gt; <a class="struct" href="../../tracing/instrument/struct.Instrumented.html" title="struct tracing::instrument::Instrumented">Instrumented</a>&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the provided <a href="../../tracing/span/struct.Span.html" title="Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <a href="../../tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#121">source</a><a href="#method.in_current_span" class="anchor"></a><h4 class="code-header">fn <a href="../../tracing/instrument/trait.Instrument.html#method.in_current_span" class="fnname">in_current_span</a>(self) -&gt; <a class="struct" href="../../tracing/instrument/struct.Instrumented.html" title="struct tracing::instrument::Instrumented">Instrumented</a>&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the <a href="../../tracing/span/struct.Span.html#method.current">current</a> <a href="../../tracing/span/struct.Span.html"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <a href="../../tracing/instrument/trait.Instrument.html#method.in_current_span">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-IntoRequest%3CT%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tonic/request.rs.html#346">source</a><a href="#impl-IntoRequest%3CT%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../trait.IntoRequest.html" title="trait teaclave_rpc::IntoRequest">IntoRequest</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_request" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tonic/request.rs.html#347">source</a><a href="#method.into_request" class="anchor"></a><h4 class="code-header">fn <a href="../trait.IntoRequest.html#tymethod.into_request" class="fnname">into_request</a>(self) -&gt; <a class="struct" href="../struct.Request.html" title="struct teaclave_rpc::Request">Request</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Wrap the input message <code>T</code> in a <code>tonic::Request</code></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83">source</a><a href="#impl-ToOwned-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/ppv_lite86/types.rs.html#221">source</a><a href="#impl-VZip%3CV%3E-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;V, T&gt; <a class="trait" href="../../ppv_lite86/types/trait.VZip.html" title="trait ppv_lite86::types::VZip">VZip</a>&lt;V&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;V: <a class="trait" href="../../ppv_lite86/types/trait.MultiLane.html" title="trait ppv_lite86::types::MultiLane">MultiLane</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/ppv_lite86/types.rs.html#226">source</a><a href="#method.vzip" class="anchor"></a><h4 class="code-header">fn <a href="../../ppv_lite86/types/trait.VZip.html#tymethod.vzip" class="fnname">vzip</a>(self) -&gt; V</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-Server%3CL%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#334">source</a><a href="#impl-WithSubscriber-for-Server%3CL%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../../tracing/instrument/trait.WithSubscriber.html" title="trait tracing::instrument::WithSubscriber">WithSubscriber</a> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_subscriber" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#169-171">source</a><a href="#method.with_subscriber" class="anchor"></a><h4 class="code-header">fn <a href="../../tracing/instrument/trait.WithSubscriber.html#method.with_subscriber" class="fnname">with_subscriber</a>&lt;S&gt;(self, subscriber: S) -&gt; <a class="struct" href="../../tracing/instrument/struct.WithDispatch.html" title="struct tracing::instrument::WithDispatch">WithDispatch</a>&lt;Self&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="../../tracing_core/dispatcher/struct.Dispatch.html" title="struct tracing_core::dispatcher::Dispatch">Dispatch</a>&gt;,</span></h4></section></summary><div class='docblock'>Attaches the provided <a href="../../tracing_core/subscriber/trait.Subscriber.html"><code>Subscriber</code></a> to this type, returning a
<a href="../../tracing/instrument/struct.WithDispatch.html" title="WithDispatch"><code>WithDispatch</code></a> wrapper. <a href="../../tracing/instrument/trait.WithSubscriber.html#method.with_subscriber">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tracing/instrument.rs.html#221">source</a><a href="#method.with_current_subscriber" class="anchor"></a><h4 class="code-header">fn <a href="../../tracing/instrument/trait.WithSubscriber.html#method.with_current_subscriber" class="fnname">with_current_subscriber</a>(self) -&gt; <a class="struct" href="../../tracing/instrument/struct.WithDispatch.html" title="struct tracing::instrument::WithDispatch">WithDispatch</a>&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="../../tracing/dispatcher/index.html#setting-the-default-subscriber">default</a> <a href="../../tracing_core/subscriber/trait.Subscriber.html"><code>Subscriber</code></a> to this type, returning a
<a href="../../tracing/instrument/struct.WithDispatch.html" title="WithDispatch"><code>WithDispatch</code></a> wrapper. <a href="../../tracing/instrument/trait.WithSubscriber.html#method.with_current_subscriber">Read more</a></div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="teaclave_rpc" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>