Files
jellytau/api/jellytau_lib/repository/offline/struct.OfflineRepository.html
T

457 lines
127 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `OfflineRepository` struct in crate `jellytau_lib`."><title>OfflineRepository in jellytau_lib::repository::offline - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="jellytau_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.97.1 (8bab26f4f 2026-07-14)" data-channel="1.97.1" data-search-js="search-fd9372ac.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../../static.files/storage-41dd4d93.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-fcd733ba.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">OfflineRepository</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../jellytau_lib/index.html">jellytau_<wbr>lib</a><span class="version">0.11.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Offline<wbr>Repository</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.db_service" title="db_service">db_service</a></li><li><a href="#structfield.server_id" title="server_id">server_id</a></li><li><a href="#structfield.user_id" title="user_id">user_id</a></li></ul><h3><a href="#implementations">Associated Constants</a></h3><ul class="block associatedconstant"><li><a href="#associatedconstant.DOWNLOADED_ITEMS_CTE" title="DOWNLOADED_ITEMS_CTE">DOWNLOADED_ITEMS_CTE</a></li><li><a href="#associatedconstant.LIBRARY_HOLDS_ITEM" title="LIBRARY_HOLDS_ITEM">LIBRARY_HOLDS_ITEM</a></li></ul><h3><a href="#implementations">Associated Functions</a></h3><ul class="block method"><li><a href="#method.new" title="new">new</a></li><li><a href="#method.cached_item_to_media_item" title="cached_item_to_media_item">cached_item_to_media_item</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.get_download_disk_usage" title="get_download_disk_usage">get_download_disk_usage</a></li><li><a href="#method.get_downloaded_items" title="get_downloaded_items">get_downloaded_items</a></li><li><a href="#method.get_downloaded_libraries" title="get_downloaded_libraries">get_downloaded_libraries</a></li><li><a href="#method.get_user_data" title="get_user_data">get_user_data</a></li><li><a href="#method.mirror_user_data" title="mirror_user_data">mirror_user_data</a></li><li><a href="#method.prune_stale_catalog" title="prune_stale_catalog">prune_stale_catalog</a></li><li><a href="#method.save_genres_to_cache" title="save_genres_to_cache">save_genres_to_cache</a></li><li><a href="#method.save_libraries_to_cache" title="save_libraries_to_cache">save_libraries_to_cache</a></li><li><a href="#method.save_playlist_items_to_cache" title="save_playlist_items_to_cache">save_playlist_items_to_cache</a></li><li><a href="#method.save_to_cache" title="save_to_cache">save_to_cache</a></li><li><a href="#method.save_to_cache_impl" title="save_to_cache_impl">save_to_cache_impl</a></li><li><a href="#method.search_people" title="search_people">search_people</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-MediaRepository-for-OfflineRepository" title="MediaRepository">MediaRepository</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-OfflineRepository" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-OfflineRepository" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-OfflineRepository" title="Send">Send</a></li><li><a href="#impl-Sync-for-OfflineRepository" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-OfflineRepository" title="Unpin">Unpin</a></li><li><a href="#impl-UnsafeUnpin-for-OfflineRepository" title="UnsafeUnpin">UnsafeUnpin</a></li><li><a href="#impl-UnwindSafe-for-OfflineRepository" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-PolicyExt-for-T" title="PolicyExt">PolicyExt</a></li><li><a href="#impl-Same-for-T" title="Same">Same</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In jellytau_<wbr>lib::<wbr>repository::<wbr>offline</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">jellytau_lib</a>::<wbr><a href="../index.html">repository</a>::<wbr><a href="index.html">offline</a></div><h1>Struct <span class="struct">Offline<wbr>Repository</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/jellytau_lib/repository/offline.rs.html#87-91">Source</a> </span></div><pre class="rust item-decl"><code>pub struct OfflineRepository {
db_service: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../storage/db_service/struct.RusqliteService.html" title="struct jellytau_lib::storage::db_service::RusqliteService">RusqliteService</a>&gt;,
server_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
}</code></pre><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.db_service" class="structfield section-header"><a href="#structfield.db_service" class="anchor field">§</a><code>db_service: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../storage/db_service/struct.RusqliteService.html" title="struct jellytau_lib::storage::db_service::RusqliteService">RusqliteService</a>&gt;</code></span><span id="structfield.server_id" class="structfield section-header"><a href="#structfield.server_id" class="anchor field">§</a><code>server_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.user_id" class="structfield section-header"><a href="#structfield.user_id" class="anchor field">§</a><code>user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OfflineRepository" class="impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#93-183">Source</a><a href="#impl-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section></summary><div class="impl-items"><section id="method.new" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#94-100">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
db_service: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../storage/db_service/struct.RusqliteService.html" title="struct jellytau_lib::storage::db_service::RusqliteService">RusqliteService</a>&gt;,
server_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
) -&gt; Self</h4></section><details class="toggle method-toggle" open><summary><section id="method.cached_item_to_media_item" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#103-152">Source</a><h4 class="code-header">fn <a href="#method.cached_item_to_media_item" class="fn">cached_item_to_media_item</a>(
item: <a class="struct" href="struct.CachedItem.html" title="struct jellytau_lib::repository::offline::CachedItem">CachedItem</a>,
user_data: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.UserData.html" title="struct jellytau_lib::repository::types::UserData">UserData</a>&gt;,
) -&gt; <a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a></h4></section></summary><div class="docblock"><p>Helper to convert CachedItem from storage to MediaItem</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_user_data" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#155-182">Source</a><h4 class="code-header">async fn <a href="#method.get_user_data" class="fn">get_user_data</a>(&amp;self, item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.UserData.html" title="struct jellytau_lib::repository::types::UserData">UserData</a>&gt;</h4></section></summary><div class="docblock"><p>Get user data for an item (playback position, favorite, etc.)</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-OfflineRepository-1" class="impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#250-1194">Source</a><a href="#impl-OfflineRepository-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.LIBRARY_HOLDS_ITEM" class="associatedconstant"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#849-855">Source</a><h4 class="code-header">const <a href="#associatedconstant.LIBRARY_HOLDS_ITEM" class="constant">LIBRARY_HOLDS_ITEM</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a> = &quot;(
(l.collection_type = &#39;music&#39; AND i.item_type IN (&#39;MusicAlbum&#39;, &#39;MusicArtist&#39;, &#39;Audio&#39;))
OR (l.collection_type = &#39;movies&#39; AND i.item_type = &#39;Movie&#39;)
OR (l.collection_type = &#39;tvshows&#39; AND i.item_type IN (&#39;Series&#39;, &#39;Season&#39;, &#39;Episode&#39;))
OR l.collection_type IS NULL
OR l.collection_type NOT IN (&#39;music&#39;, &#39;movies&#39;, &#39;tvshows&#39;)
)&quot;</h4></section></summary><div class="docblock"><p>SQL fragment: the set of item ids that are “on the device” — playable
items with a completed download, plus containers (album/series/season)
that have at least one downloaded child. This is the <code>get_items</code> CTE with
the synced-but-not-downloaded catalog branch deliberately excluded, so it
is authoritative regardless of the process-wide catalog-browse flag.</p>
<p>Whether cached item <code>i</code> belongs to library <code>l</code>, decided by media kind.</p>
<p>The cache leaves <code>library_id</code>/<code>parent_id</code> NULL on every item
([[offline-libraries-never-cached]]), so there is no link to follow: a
librarys <code>collection_type</code> and an items <code>item_type</code> are the only things
that can associate them. This is Jellyfin taxonomy and therefore lives in
Rust, never in the frontend.</p>
<p>It is a named constant because it is needed in two places that must agree
— which library <em>appears</em> in the Downloaded list, and which items appear
<em>inside</em> it. They disagreed: the listing query used this mapping while the
browse query only checked that the requested library existed, so opening
any library showed every downloaded top-level item on the server.</p>
<p>A library of some other (or unknown) type keeps everything, since there is
no mapping to narrow it by and hiding its contents would be worse.</p>
<p>TRACES: UR-055 | DR-082, DR-167</p>
</div></details><details class="toggle" open><summary><section id="associatedconstant.DOWNLOADED_ITEMS_CTE" class="associatedconstant"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#858-874">Source</a><h4 class="code-header">const <a href="#associatedconstant.DOWNLOADED_ITEMS_CTE" class="constant">DOWNLOADED_ITEMS_CTE</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a> = &quot;
WITH downloaded_items AS (
SELECT DISTINCT i.id
FROM items i
INNER JOIN downloads d ON i.id = d.item_id
WHERE d.status = &#39;completed&#39;
AND i.item_type IN (&#39;Audio&#39;, &#39;Movie&#39;, &#39;Episode&#39;)
UNION
SELECT DISTINCT i.id
FROM items i
INNER JOIN items children ON (children.parent_id = i.id OR children.album_id = i.id OR children.season_id = i.id OR children.series_id = i.id)
INNER JOIN downloads d ON children.id = d.item_id
WHERE d.status = &#39;completed&#39;
AND i.item_type IN (&#39;MusicAlbum&#39;, &#39;Series&#39;, &#39;Season&#39;, &#39;BoxSet&#39;, &#39;Folder&#39;, &#39;CollectionFolder&#39;)
)&quot;</h4></section></summary><div class="docblock"><p>TRACES: UR-055 | DR-082, DR-083</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.prune_stale_catalog" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#277-324">Source</a><h4 class="code-header">pub async fn <a href="#method.prune_stale_catalog" class="fn">prune_stale_catalog</a>(
&amp;self,
cutoff: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_types: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Remove catalog entries the server no longer has (mark-and-sweep).</p>
<p><code>save_to_cache</code> stamps every row it writes with a fresh <code>synced_at</code>, so
after a complete crawl anything still on the server carries a timestamp
newer than <code>cutoff</code> (taken before the crawl began) and anything deleted
server-side kept its older one. Sweeping by timestamp avoids binding the
crawls entire id set, which would blow past SQLites variable limit on a
large library.</p>
<p>Three exclusions, each load-bearing:</p>
<ul>
<li><strong>Only <code>item_types</code> the crawl actually requested.</strong> The crawl asks for
<code>CATALOG_ITEM_TYPES</code>; rows of any other type (artists, playlists, the
<code>Folder</code> parent stubs <code>save_to_cache</code> inserts) are never refreshed by
it, so sweeping by age alone would delete every one of them.</li>
<li><strong>Anything a completed download depends on</strong> — the downloaded item
itself, and any container with a downloaded child. The user has those
bytes on disk; dropping the row would orphan the file.</li>
<li>Callers must only invoke this after a crawl in which <em>every</em> library
succeeded. <code>sync_full_catalog</code> is best-effort per library, and
<code>items.parent_id</code> is <code>ON DELETE CASCADE</code>, so sweeping after a partial
crawl could cascade an entire series away because one request timed out.</li>
</ul>
<p>Returns the number of rows removed.</p>
<p>TRACES: UR-065 | DR-110 | UT-113</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.search_people" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#334-389">Source</a><h4 class="code-header">async fn <a href="#method.search_people" class="fn">search_people</a>(
&amp;self,
fts_query: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
limit: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Full-text search over cached people (cast and crew).</p>
<p>People are stored in their own table rather than in <code>items</code>, so search
has to look them up separately and adapt them to <code>MediaItem</code>. Availability
gating deliberately does not apply: a person is metadata, never a
download, so there is nothing to be offline about.</p>
<p>TRACES: UR-065, UR-060 | DR-111 | UT-114</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.save_to_cache" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#395-423">Source</a><h4 class="code-header">pub async fn <a href="#method.save_to_cache" class="fn">save_to_cache</a>(
&amp;self,
parent_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
items: &amp;[<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Save browsed items to cache for faster subsequent loading</p>
<p>This persists metadata for items that were browsed (not necessarily downloaded).
Items are marked with current timestamp for freshness tracking.</p>
</div></details><section id="method.save_to_cache_impl" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#425-665">Source</a><h4 class="code-header">async fn <a href="#method.save_to_cache_impl" class="fn">save_to_cache_impl</a>(
&amp;self,
parent_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
items: &amp;[<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>],
now: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.mirror_user_data" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#689-733">Source</a><h4 class="code-header">async fn <a href="#method.mirror_user_data" class="fn">mirror_user_data</a>(
&amp;self,
item: &amp;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>,
now: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Mirror the servers per-user state for an item into the local
<code>user_data</code> table, so favourites marked — and positions watched — on any
other client are visible here, including offline, where the local table
is the only source.</p>
<p>The <code>WHERE user_data.pending_sync = 0</code> on the conflict clause is the
conflict rule: a change made while the server was unreachable is still
waiting to be pushed, and must not be clobbered by the stale value the
server is still reporting. For a position that means it is never pulled
<em>backwards</em> by a server that has not yet heard where we got to.</p>
<p>Each field is mirrored only when the server actually reported it —
<code>COALESCE(excluded.x, user_data.x)</code> keeps the stored value for anything
absent, and a row with neither field is skipped outright rather than
written as zeroes, which would fabricate an “unfavourited, unwatched”
record from an endpoint that simply omits <code>UserData</code>.</p>
<p>The position half is what makes cross-device resume work: the resume
check reads this table alone, so before it was mirrored an item watched
elsewhere resumed from whatever <em>this</em> device last saw, or not at all.</p>
<p>TRACES: UR-025, UR-069 | DR-114, DR-155 | UT-102, UT-152</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.save_libraries_to_cache" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#739-765">Source</a><h4 class="code-header">pub async fn <a href="#method.save_libraries_to_cache" class="fn">save_libraries_to_cache</a>(
&amp;self,
libraries: &amp;[<a class="struct" href="../types/struct.Library.html" title="struct jellytau_lib::repository::types::Library">Library</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Cache the library (view) list from the server into the local database.
Called by HybridRepository after a successful online fetch so the list is
available offline. Without this, the <code>libraries</code> table stays empty and
offline startup shows no libraries at all.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.save_genres_to_cache" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#771-823">Source</a><h4 class="code-header">pub async fn <a href="#method.save_genres_to_cache" class="fn">save_genres_to_cache</a>(
&amp;self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
genres: &amp;[<a class="struct" href="../types/struct.Genre.html" title="struct jellytau_lib::repository::types::Genre">Genre</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Cache the full server genre catalog for a library, so offline (and the
hybrid cache-first race) can return the complete list instead of only the
genres derivable from locally-cached albums. Replaces the scopes rows
wholesale so genres removed on the server dont linger.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_downloaded_items" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#885-984">Source</a><h4 class="code-header">pub async fn <a href="#method.get_downloaded_items" class="fn">get_downloaded_items</a>(
&amp;self,
parent_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Downloaded-only browse: items under <code>parent_id</code> that are on the device.</p>
<p>Unlike <a href="../trait.MediaRepository.html#tymethod.get_items" title="method jellytau_lib::repository::MediaRepository::get_items"><code>MediaRepository::get_items</code></a>, this never includes the
synced-but-not-downloaded catalog and never consults the process-wide
<code>INCLUDE_CATALOG_BROWSE</code> flag — it is the dedicated Downloads surface.
An empty result is authoritative (“nothing downloaded here”), so the
hybrid repo must call this directly rather than racing the server.</p>
<p>TRACES: UR-055 | DR-082, DR-083</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_downloaded_libraries" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#991-1027">Source</a><h4 class="code-header">pub async fn <a href="#method.get_downloaded_libraries" class="fn">get_downloaded_libraries</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.Library.html" title="struct jellytau_lib::repository::types::Library">Library</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Libraries that contain at least one downloaded item. Libraries with
nothing on the device are omitted, so the Downloaded surface only lists
libraries the user actually has offline content in.</p>
<p>TRACES: UR-055 | DR-082</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_download_disk_usage" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1037-1143">Source</a><h4 class="code-header">pub async fn <a href="#method.get_download_disk_usage" class="fn">get_download_disk_usage</a>(
&amp;self,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.DownloadDiskUsage.html" title="struct jellytau_lib::repository::types::DownloadDiskUsage">DownloadDiskUsage</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>On-disk bytes for downloaded content, for the disk-usage display.</p>
<p>Returns one entry per <em>container or leaf</em> that appears in the Downloaded
browse: a leafs own <code>file_size</code>, a containers summed downloaded
descendants — plus the device total and item (leaf) count. This is pure
aggregation over <code>downloads.file_size</code>, not new tracking.</p>
<p>TRACES: UR-056 | DR-085</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.save_playlist_items_to_cache" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1147-1193">Source</a><h4 class="code-header">pub async fn <a href="#method.save_playlist_items_to_cache" class="fn">save_playlist_items_to_cache</a>(
&amp;self,
playlist_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
entries: &amp;[<a class="struct" href="../types/struct.PlaylistEntry.html" title="struct jellytau_lib::repository::types::PlaylistEntry">PlaylistEntry</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Cache playlist items from server into local database
Called by HybridRepository after fetching from online</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MediaRepository-for-OfflineRepository" class="impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1197-2516">Source</a><a href="#impl-MediaRepository-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.MediaRepository.html" title="trait jellytau_lib::repository::MediaRepository">MediaRepository</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.get_favorites" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2015-2106">Source</a><a href="#method.get_favorites" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_favorites" class="fn">get_favorites</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
scope: <a class="enum" href="../types/enum.SearchScope.html" title="enum jellytau_lib::repository::types::SearchScope">SearchScope</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Favourites held locally — the ones mirrored from the server by
<code>save_to_cache</code> plus anything favourited on this device.</p>
<p>Gated by the same <code>available_items</code> rules as browsing, so with “Show all
server media” off this returns favourites that are actually on the
device rather than the whole favourited catalog (DR-080).</p>
<p>TRACES: UR-067 | DR-115 | UT-101</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_libraries" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1198-1226">Source</a><a href="#method.get_libraries" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_libraries" class="fn">get_libraries</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.Library.html" title="struct jellytau_lib::repository::types::Library">Library</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get all libraries <a href="../trait.MediaRepository.html#tymethod.get_libraries">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1228-1396">Source</a><a href="#method.get_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_items" class="fn">get_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get items in a library or parent <a href="../trait.MediaRepository.html#tymethod.get_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_item" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1398-1444">Source</a><a href="#method.get_item" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_item" class="fn">get_item</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get a single item by ID <a href="../trait.MediaRepository.html#tymethod.get_item">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_latest_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1446-1511">Source</a><a href="#method.get_latest_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_latest_items" class="fn">get_latest_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get latest items in a library <a href="../trait.MediaRepository.html#tymethod.get_latest_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_resume_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1513-1589">Source</a><a href="#method.get_resume_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_resume_items" class="fn">get_resume_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get resume items (continue watching/listening) <a href="../trait.MediaRepository.html#tymethod.get_resume_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_next_up_episodes" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1591-1599">Source</a><a href="#method.get_next_up_episodes" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_next_up_episodes" class="fn">get_next_up_episodes</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_series_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
_limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get next up episodes <a href="../trait.MediaRepository.html#tymethod.get_next_up_episodes">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_recently_played_audio" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1601-1679">Source</a><a href="#method.get_recently_played_audio" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_recently_played_audio" class="fn">get_recently_played_audio</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get recently played audio</div></details><details class="toggle method-toggle" open><summary><section id="method.get_rediscover_albums" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1681-1690">Source</a><a href="#method.get_rediscover_albums" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_rediscover_albums" class="fn">get_rediscover_albums</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
_limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get albums the user has played, but not recently (“rediscover” / havent
listened to in a while). Returns albums sorted by least-recently played
first, optionally restricted to a parent library.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_resume_movies" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1692-1733">Source</a><a href="#method.get_resume_movies" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_resume_movies" class="fn">get_resume_movies</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get resume movies</div></details><details class="toggle method-toggle" open><summary><section id="method.get_genres" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1735-1763">Source</a><a href="#method.get_genres" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_genres" class="fn">get_genres</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.Genre.html" title="struct jellytau_lib::repository::types::Genre">Genre</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get genres</div></details><details class="toggle method-toggle" open><summary><section id="method.search" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1765-1885">Source</a><a href="#method.search" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.search" class="fn">search</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
query: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.SearchOptions.html" title="struct jellytau_lib::repository::types::SearchOptions">SearchOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Search for items <a href="../trait.MediaRepository.html#tymethod.search">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_playback_info" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1887-1890">Source</a><a href="#method.get_playback_info" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_playback_info" class="fn">get_playback_info</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.PlaybackInfo.html" title="struct jellytau_lib::repository::types::PlaybackInfo">PlaybackInfo</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get playback info for streaming <a href="../trait.MediaRepository.html#tymethod.get_playback_info">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_audio_stream_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1892-1895">Source</a><a href="#method.get_audio_stream_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_audio_stream_url" class="fn">get_audio_stream_url</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get audio stream URL for a track <a href="../trait.MediaRepository.html#tymethod.get_audio_stream_url">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_audio_only_stream_url_for_video" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1897-1906">Source</a><a href="#method.get_audio_only_stream_url_for_video" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_audio_only_stream_url_for_video" class="fn">get_audio_only_stream_url_for_video</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
_start_time_seconds: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.f64.html">f64</a>&gt;,
_audio_stream_index: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Get an audio-only stream URL for a <em>video</em> item (background-audio handoff). <a href="../trait.MediaRepository.html#tymethod.get_audio_only_stream_url_for_video">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_live_tv_channels" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1908-1911">Source</a><a href="#method.get_live_tv_channels" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_live_tv_channels" class="fn">get_live_tv_channels</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get Live TV channels (broadcast / IPTV) for browsing.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_channels" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1913-1916">Source</a><a href="#method.get_channels" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_channels" class="fn">get_channels</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get the root list of plugin “Channels” (Jellyfin Channels feature).
Drill-down into a channel reuses <code>get_items(channel_id, ...)</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.open_live_stream" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1918-1921">Source</a><a href="#method.open_live_stream" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.open_live_stream" class="fn">open_live_stream</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.LiveStreamInfo.html" title="struct jellytau_lib::repository::types::LiveStreamInfo">LiveStreamInfo</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Open a live stream (Live TV channel or live channel item) for playback. <a href="../trait.MediaRepository.html#tymethod.open_live_stream">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_start" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1923-1930">Source</a><a href="#method.report_playback_start" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_start" class="fn">report_playback_start</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback start <a href="../trait.MediaRepository.html#tymethod.report_playback_start">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_progress" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1932-1939">Source</a><a href="#method.report_playback_progress" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_progress" class="fn">report_playback_progress</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback progress <a href="../trait.MediaRepository.html#tymethod.report_playback_progress">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_stopped" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1941-1948">Source</a><a href="#method.report_playback_stopped" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_stopped" class="fn">report_playback_stopped</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback stopped <a href="../trait.MediaRepository.html#tymethod.report_playback_stopped">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_image_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1950-1973">Source</a><a href="#method.get_image_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_image_url" class="fn">get_image_url</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
image_type: <a class="enum" href="../types/enum.ImageType.html" title="enum jellytau_lib::repository::types::ImageType">ImageType</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.ImageOptions.html" title="struct jellytau_lib::repository::types::ImageOptions">ImageOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Get image URL (synchronous - just constructs URL)</div></details><details class="toggle method-toggle" open><summary><section id="method.get_subtitle_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1975-1984">Source</a><a href="#method.get_subtitle_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_subtitle_url" class="fn">get_subtitle_url</a>(
&amp;self,
_item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_media_source_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_stream_index: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>,
_format: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Get subtitle URL (synchronous - just constructs URL)
Called by frontend via Tauri invoke (getSubtitleUrl in VideoPlayer.svelte)</div></details><details class="toggle method-toggle" open><summary><section id="method.get_video_download_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1986-1995">Source</a><a href="#method.get_video_download_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_video_download_url" class="fn">get_video_download_url</a>(
&amp;self,
_item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_quality: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
_source_audio_codec: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Build the URL a video download is fetched from. Synchronous — it only
constructs a URL, so it stays testable without a server. Reach it through
<a href="../fn.resolve_video_download_url.html" title="fn jellytau_lib::repository::resolve_video_download_url"><code>resolve_video_download_url</code></a> rather than calling it directly. <a href="../trait.MediaRepository.html#tymethod.get_video_download_url">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.mark_favorite" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#1997-2000">Source</a><a href="#method.mark_favorite" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.mark_favorite" class="fn">mark_favorite</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Mark item as favorite</div></details><details class="toggle method-toggle" open><summary><section id="method.unmark_favorite" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2002-2005">Source</a><a href="#method.unmark_favorite" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.unmark_favorite" class="fn">unmark_favorite</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Unmark item as favorite</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_watch_history" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2108-2112">Source</a><a href="#method.clear_watch_history" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.clear_watch_history" class="fn">clear_watch_history</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Erase the viewers watch history for an item: clear its played flag and
its resume position. On a container (series, season) this applies to
everything inside it, so a series is returned to “never watched” and
reopens on its premiere. <a href="../trait.MediaRepository.html#tymethod.clear_watch_history">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.mark_played" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2114-2118">Source</a><a href="#method.mark_played" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.mark_played" class="fn">mark_played</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Mark an item played — the inverse of <code>clear_watch_history</code>. Needed by the
sync-queue drain, which replays <code>mark_played</code> rows queued while the
server was unreachable; reporting a stop at a made-up position was the
previous stand-in and does not set the played flag reliably. <a href="../trait.MediaRepository.html#tymethod.mark_played">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_person" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2120-2180">Source</a><a href="#method.get_person" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_person" class="fn">get_person</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
person_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get person details</div></details><details class="toggle method-toggle" open><summary><section id="method.get_items_by_person" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2182-2248">Source</a><a href="#method.get_items_by_person" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_items_by_person" class="fn">get_items_by_person</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
person_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get items by person (filmography)</div></details><details class="toggle method-toggle" open><summary><section id="method.get_similar_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2250-2257">Source</a><a href="#method.get_similar_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_similar_items" class="fn">get_similar_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
_item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
_limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get similar/related items for a movie or show <a href="../trait.MediaRepository.html#tymethod.get_similar_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.create_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2261-2296">Source</a><a href="#method.create_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.create_playlist" class="fn">create_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
name: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.PlaylistCreatedResult.html" title="struct jellytau_lib::repository::types::PlaylistCreatedResult">PlaylistCreatedResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Create a new playlist on the server <a href="../trait.MediaRepository.html#tymethod.create_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.delete_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2298-2310">Source</a><a href="#method.delete_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.delete_playlist" class="fn">delete_playlist</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Delete a playlist <a href="../trait.MediaRepository.html#tymethod.delete_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2312-2327">Source</a><a href="#method.rename_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.rename_playlist" class="fn">rename_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
name: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Rename a playlist <a href="../trait.MediaRepository.html#tymethod.rename_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_playlist_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2329-2392">Source</a><a href="#method.get_playlist_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_playlist_items" class="fn">get_playlist_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.PlaylistEntry.html" title="struct jellytau_lib::repository::types::PlaylistEntry">PlaylistEntry</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get playlist items with PlaylistItemId (needed for remove/reorder) <a href="../trait.MediaRepository.html#tymethod.get_playlist_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.add_to_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2394-2435">Source</a><a href="#method.add_to_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.add_to_playlist" class="fn">add_to_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Add items to a playlist <a href="../trait.MediaRepository.html#tymethod.add_to_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.remove_from_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2437-2466">Source</a><a href="#method.remove_from_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.remove_from_playlist" class="fn">remove_from_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
entry_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Remove items from a playlist using entry IDs (PlaylistItemId, NOT media item IDs) <a href="../trait.MediaRepository.html#tymethod.remove_from_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.move_playlist_item" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/offline.rs.html#2468-2515">Source</a><a href="#method.move_playlist_item" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.move_playlist_item" class="fn">move_playlist_item</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_id: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
new_index: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.u32.html">u32</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Move a playlist item to a new position <a href="../trait.MediaRepository.html#tymethod.move_playlist_item">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-OfflineRepository" class="impl"><a href="#impl-Freeze-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-RefUnwindSafe-for-OfflineRepository" class="impl"><a href="#impl-RefUnwindSafe-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-Send-for-OfflineRepository" class="impl"><a href="#impl-Send-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-Sync-for-OfflineRepository" class="impl"><a href="#impl-Sync-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-Unpin-for-OfflineRepository" class="impl"><a href="#impl-Unpin-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-UnsafeUnpin-for-OfflineRepository" class="impl"><a href="#impl-UnsafeUnpin-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.UnsafeUnpin.html" title="trait core::marker::UnsafeUnpin">UnsafeUnpin</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section><section id="impl-UnwindSafe-for-OfflineRepository" class="impl"><a href="#impl-UnwindSafe-for-OfflineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.OfflineRepository.html" title="struct jellytau_lib::repository::offline::OfflineRepository">OfflineRepository</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/any.rs.html#141">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/any.rs.html#142">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/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/1.97.1/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#786">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/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="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#789">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-T" class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor">§</a><h4 class="code-header">fn <a class="fn">instrument</a>(self, span: Span) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the provided [<code>Span</code>], returning an
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#768-770">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#778">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html#tymethod.into" class="fn">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/1.97.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-PolicyExt-for-T" class="impl"><a href="#impl-PolicyExt-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; PolicyExt for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.and" class="method trait-impl"><a href="#method.and" class="anchor">§</a><h4 class="code-header">fn <a class="fn">and</a>&lt;P, B, E&gt;(self, other: P) -&gt; And&lt;T, P&gt;<div class="where">where
T: Policy&lt;B, E&gt;,
P: Policy&lt;B, E&gt;,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] only if <code>self</code> and <code>other</code> return
<code>Action::Follow</code>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.or" class="method trait-impl"><a href="#method.or" class="anchor">§</a><h4 class="code-header">fn <a class="fn">or</a>&lt;P, B, E&gt;(self, other: P) -&gt; Or&lt;T, P&gt;<div class="where">where
T: Policy&lt;B, E&gt;,
P: Policy&lt;B, E&gt;,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] if either <code>self</code> or <code>other</code> returns
<code>Action::Follow</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Same-for-T" class="impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#34">Source</a><a href="#impl-Same-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html" title="trait typenum::type_operators::Same">Same</a> for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#35">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html#associatedtype.Output" class="associatedtype">Output</a> = T</h4></section></summary><div class='docblock'>Should always be <code>Self</code></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#828-830">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#832">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.97.1/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="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#835">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/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/1.97.1/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/1.97.1/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="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#812-814">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#816">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.97.1/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/1.97.1/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="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#819">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/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/1.97.1/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/1.97.1/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="toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-T" class="impl"><a href="#impl-VZip%3CV%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;V, T&gt; VZip&lt;V&gt; for T<div class="where">where
V: MultiLane&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -&gt; V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-T" class="impl"><a href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; WithSubscriber for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_subscriber" class="method trait-impl"><a href="#method.with_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_subscriber</a>&lt;S&gt;(self, subscriber: S) -&gt; WithDispatch&lt;Self&gt;<div class="where">where
S: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Dispatch&gt;,</div></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -&gt; WithDispatch&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="dispatcher#setting-the-default-subscriber">default</a> <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details></div></section></div></main></body></html>