<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="The Kanidmd server library. This implements all of the internal components of the server which is used to process authentication, store identities and enforce access controls."><title>kanidmd_lib - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../static.files/rustdoc-c4dbdcde0fbd8430.css"id="mainThemeStyle"><linkrel="stylesheet"id="themeStyle"href="../static.files/light-db279b6232be9c13.css"><linkrel="stylesheet"disabledhref="../static.files/dark-cf923f49f397b216.css"><linkrel="stylesheet"disabledhref="../static.files/ayu-be46fdc453a55015.css"><scriptsrc="../static.files/storage-3891ce972e3a2bf8.js"></script><scriptdefersrc="../crates.js"></script><scriptdefersrc="../static.files/main-98a684e84ae5b08b.js"></script><noscript><linkrel="stylesheet"href="../static.files/noscript-13285aec31fa243e.css"></noscript><linkrel="alternate icon"type="image/png"href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle">☰</button><aclass="logo-container"href="../kanidmd_lib/index.html"><imgclass="rust-logo"src="../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></a><h2></h2></nav><navclass="sidebar"><aclass="logo-container"href="../kanidmd_lib/index.html"><imgclass="rust-logo"src="../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></a><h2class="location"><ahref="#">Crate kanidmd_lib</a></h2><divclass="sidebar-elems"><ulclass="block"><liclass="version">Version 1.1.0-alpha.12</li><li><aid="all-types"href="all.html">All Items</a></li></ul><section><ulclass="block"><li><ahref="#modules">Modules</a></li><li><ahref="#macros">Macros</a></li></ul></section></div></nav><main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"title="help"tabindex="-1"><ahref="../help.html">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Crate <aclass="mod"href="#">kanidmd_lib</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="srclink"href="../src/kanidmd_lib/lib.rs.html#1-103">source</a> · <butt
</div></details><h2id="modules"class="small-section-header"><ahref="#modules">Modules</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="mod"href="be/index.html"title="mod kanidmd_lib::be">be</a></div><divclass="desc docblock-short">The backend. This contains the “low level” storage and query code, which is
utilising indexes in the most effective way possible.</div></li><li><divclass="item-name"><aclass="mod"href="constants/index.html"title="mod kanidmd_lib::constants">constants</a></div></li><li><divclass="item-name"><aclass="mod"href="credential/index.html"title="mod kanidmd_lib::credential">credential</a></div></li><li><divclass="item-name"><aclass="mod"href="entry/index.html"title="mod kanidmd_lib::entry">entry</a></div><divclass="desc docblock-short">Entries are the base unit of object storage in the server. This is one of the three foundational
concepts along with <ahref="../filter/index.html"><code>filter</code></a>s and <ahref="../schema/index.html"><code>schema</code></a> that everything else builds upon.</div></li><li><divclass="item-name"><aclass="mod"href="event/index.html"title="mod kanidmd_lib::event">event</a></div><divclass="desc docblock-short">An <code>event</code> is a self contained module of data, that contains all of the
types of potential events, they all eventually lower to one of:</div></li><li><divclass="item-name"><aclass="mod"href="filter/index.html"title="mod kanidmd_lib::filter">filter</a></div><divclass="desc docblock-short"><ahref="struct.Filter.html"><code>Filter</code></a>s are one of the three foundational concepts of the design in kanidm.
datasets and assertion of entry properties.</div></li><li><divclass="item-name"><aclass="mod"href="idm/index.html"title="mod kanidmd_lib::idm">idm</a></div><divclass="desc docblock-short">The Identity Management components that are layered on top of the <ahref="server/struct.QueryServer.html"title="struct kanidmd_lib::server::QueryServer">QueryServer</a>. These allow
actions in the <ahref="server/struct.QueryServer.html"title="struct kanidmd_lib::server::QueryServer">QueryServer</a>. Generally this is where “Identity Management” policy and code
is implemented.</div></li><li><divclass="item-name"><aclass="mod"href="macros/index.html"title="mod kanidmd_lib::macros">macros</a></div></li><li><divclass="item-name"><aclass="mod"href="modify/index.html"title="mod kanidmd_lib::modify">modify</a></div><divclass="desc docblock-short">Modification expressions and validation. This is how <code>ModifyEvents</code> store and
as “states” on what attribute-values should appear as within the <code>Entry</code></div></li><li><divclass="item-name"><aclass="mod"href="prelude/index.html"title="mod kanidmd_lib::prelude">prelude</a></div><divclass="desc docblock-short">A prelude of imports that should be imported by all other Kanidm modules to
help make imports cleaner.</div></li><li><divclass="item-name"><aclass="mod"href="schema/index.html"title="mod kanidmd_lib::schema">schema</a></div><divclass="desc docblock-short"><ahref="struct.Schema.html"><code>Schema</code></a> is one of the foundational concepts of the server. It provides a
which enables many other parts to function.</div></li><li><divclass="item-name"><aclass="mod"href="server/index.html"title="mod kanidmd_lib::server">server</a></div><divclass="desc docblock-short"><code>server</code> contains the query server, which is the main high level construction
to coordinate queries and operations in the server.</div></li><li><divclass="item-name"><aclass="mod"href="status/index.html"title="mod kanidmd_lib::status">status</a></div><divclass="desc docblock-short">An actor that shows the servers current status and statistics. (TODO).</div></li><li><divclass="item-name"><aclass="mod"href="testkit/index.html"title="mod kanidmd_lib::testkit">testkit</a></div></li><li><divclass="item-name"><aclass="mod"href="utils/index.html"title="mod kanidmd_lib::utils">utils</a></div></li><li><divclass="item-name"><aclass="mod"href="value/index.html"title="mod kanidmd_lib::value">value</a></div><divclass="desc docblock-short">Inside an entry, the key-value pairs are stored in these <ahref="value/enum.Value.html"title="enum kanidmd_lib::value::Value"><code>Value</code></a> types. The components of
the <ahref="value/enum.Value.html"title="enum kanidmd_lib::value::Value"><code>Value</code></a> module allow storage and transformation of various types of input into strongly
these into a form for the backend that can be persistent into the <ahref="be/struct.Backend.html"title="struct kanidmd_lib::be::Backend"><code>Backend</code></a>.</div></li><li><divclass="item-name"><aclass="mod"href="valueset/index.html"title="mod kanidmd_lib::valueset">valueset</a></div></li></ul><h2id="macros"class="small-section-header"><ahref="#macros">Macros</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="macro"href="macro.btreemap.html"title="macro kanidmd_lib::btreemap">btreemap</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.btreeset.html"title="macro kanidmd_lib::btreeset">btreeset</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.entry_init.html"title="macro kanidmd_lib::entry_init">entry_init</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.f_and.html"title="macro kanidmd_lib::f_and">f_and</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.f_inc.html"title="macro kanidmd_lib::f_inc">f_inc</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.f_or.html"title="macro kanidmd_lib::f_or">f_or</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.filter.html"title="macro kanidmd_lib::filter">filter</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.filter_all.html"title="macro kanidmd_lib::filter_all">filter_all</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.filter_rec.html"title="macro kanidmd_lib::filter_rec">filter_rec</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.mergemaps.html"title="macro kanidmd_lib::mergemaps">mergemaps</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.mergesets.html"title="macro kanidmd_lib::mergesets">mergesets</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.modlist.html"title="macro kanidmd_lib::modlist">modlist</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.smolset.html"title="macro kanidmd_lib::smolset">smolset</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_bool.html"title="macro kanidmd_lib::vs_bool">vs_bool</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_cid.html"title="macro kanidmd_lib::vs_cid">vs_cid</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_iname.html"title="macro kanidmd_lib::vs_iname">vs_iname</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_index.html"title="macro kanidmd_lib::vs_index">vs_index</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_iutf8.html"title="macro kanidmd_lib::vs_iutf8">vs_iutf8</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_refer.html"title="macro kanidmd_lib::vs_refer">vs_refer</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_syntax.html"title="macro kanidmd_lib::vs_syntax">vs_syntax</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_utf8.html"title="macro kanidmd_lib::vs_utf8">vs_utf8</a></div></li><li><divclass="item-name"><aclass="macro"href="macro.vs_uuid.html"title="macro kanidmd_lib::vs_uuid">vs_uuid</a></div></li></ul></section></div></main><divid="rustdoc-vars"data-root-path="../"data-static-root-path="../static.files/"data-current-crate="kanidmd_lib"data-themes=""data-resource-suffix=""data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)"data-search-js="search-8a59a8356673ec1f.js"data-settings-js="settings-f0c5c39777a9a2f6.js"data-settings-css="settings-0bcba95ff279c1db.css"></div></body></html>