<!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="An item representing a class and the rules for that class. These rules enforce that an `Entry`’s avas conform to a set of requirements, giving structure to an entry about what avas must or may exist. The kanidm project provides attributes in `systemmust` and `systemmay`, which can not be altered. An administrator may extend these in the `must` and `may` attributes."><metaname="keywords"content="rust, rustlang, rust-lang, SchemaClass"><title>SchemaClass in kanidmd_lib::schema - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.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-124a1ca42af929b6.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-6827029ac823cab7.css"id="mainThemeStyle"><linkrel="stylesheet"id="themeStyle"href="../../static.files/light-ebce58d0a40c3431.css"><linkrel="stylesheet"disabledhref="../../static.files/dark-f23faae4a2daf9a6.css"><linkrel="stylesheet"disabledhref="../../static.files/ayu-8af5e100b21cd173.css"><scriptid="default-settings"></script><scriptsrc="../../static.files/storage-d43fa987303ecbbb.js"></script><scriptdefersrc="sidebar-items.js"></script><scriptdefersrc="../../static.files/main-c55e1eb52e1886b4.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 struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle">☰</button><aclass="sidebar-logo"href="../../kanidmd_lib/index.html"><divclass="logo-container"><imgclass="rust-logo"src="../../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></div></a><h2></h2></nav><navclass="sidebar"><aclass="sidebar-logo"href="../../kanidmd_lib/index.html"><divclass="logo-container"><imgclass="rust-logo"src="../../static.files/rust-logo-151179464ae7ed46.svg"alt="logo"></div></a><h2class="location"><ahref="#">SchemaClass</a></h2><divclass="sidebar-elems"><section><h3><ahref="#fields">Fields</a></h3><ulclass="block"><li><ahref="#structfield.description">description</a></li><li><ahref="#structfield.excludes">excludes</a></li><li><ahref="#structfield.may">may</a></li><li><ahref="#structfield.must">must</a></li><li><ahref="#structfield.name">name</a></li><li><ahref="#structfield.supplements">supplements</a></li><li><ahref="#structfield.sync_allowed">sync_allowed</a></li><li><ahref="#structfield.systemexcludes">systemexcludes</a></li><li><ahref="#structfield.systemmay">systemmay</a></li><li><ahref="#structfield.systemmust">systemmust</a></li><li><ahref="#structfield.systemsupplements">systemsupplements</a></li><li><ahref="#structfield.uuid">uuid</a></li></ul><h3><ahref="#implementations">Methods</a></h3><ulclass="block"><li><a
}</code></pre></div><detailsclass="rustdoc-toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>An item representing a class and the rules for that class. These rules enforce that an
<ahref="../entry/index.html"><code>Entry</code></a>’s avas conform to a set of requirements, giving structure to an entry about
what avas must or may exist. The kanidm project provides attributes in <code>systemmust</code> and
<code>systemmay</code>, which can not be altered. An administrator may extend these in the <code>must</code>
and <code>may</code> attributes.</p>
<p>Classes are additive, meaning that if there are two classes, the <code>may</code> rules of both union,
and that if an attribute is <code>must</code> on one class, and <code>may</code> in another, the <code>must</code> rule
takes precedence. It is not possible to combine classes in an incompatible way due to these
rules.</p>
<p>That in mind, and entry that has one of every possible class would probably be nonsensical,
but the addition rules make it easy to construct and understand with concepts like <ahref="../access/index.html"><code>access</code></a>
controls or accounts and posix extensions.</p>
</div></details><h2id="fields"class="fields small-section-header">Fields<ahref="#fields"class="anchor">§</a></h2><spanid="structfield.name"class="structfield small-section-header"><ahref="#structfield.name"class="anchor field">§</a><code>name: <aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a></code></span><spanid="structfield.uuid"class="structfield small-section-header"><ahref="#structfield.uuid"class="anchor field">§</a><code>uuid: <aclass="struct"href="../prelude/struct.Uuid.html"title="struct kanidmd_lib::prelude::Uuid">Uuid</a></code></span><spanid="structfield.description"class="structfield small-section-header"><ahref="#structfield.description"class="anchor field">§</a><code>description: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/string/struct.String.html"title="struct alloc::string::String">String</a></code></span><spanid="structfield.sync_allowed"class="structfield small-section-header"><ahref="#structfield.sync_allowed"class="anchor field">§</a><code>sync_allowed: <aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.bool.html">bool</a></code></span><spanid="structfield.systemmay"class="structfield small-section-header"><ahref="#structfield.systemmay"class="anchor field">§</a><code>systemmay: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><divclass="docblock"><p>This allows modification of system types to be extended in custom ways</p>
</div><spanid="structfield.may"class="structfield small-section-header"><ahref="#structfield.may"class="anchor field">§</a><code>may: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><spanid="structfield.systemmust"class="structfield small-section-header"><ahref="#structfield.systemmust"class="anchor field">§</a><code>systemmust: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><spanid="structfield.must"class="structfield small-section-header"><ahref="#structfield.must"class="anchor field">§</a><code>must: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><spanid="structfield.systemsupplements"class="structfield small-section-header"><ahref="#structfield.systemsupplements"class="anchor field">§</a><code>systemsupplements: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><divclass="docblock"><p>A list of classes that this extends. These are an “or”, as at least one
of the supplementing classes must also be present. Think of this as
“inherits toward” or “provides”. This is just as “strict” as requires but
operates in the opposite direction allowing a tree structure.</p>
</div><spanid="structfield.supplements"class="structfield small-section-header"><ahref="#structfield.supplements"class="anchor field">§</a><code>supplements: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><spanid="structfield.systemexcludes"class="structfield small-section-header"><ahref="#structfield.systemexcludes"class="anchor field">§</a><code>systemexcludes: <aclass="struct"href="https://doc.rust-lang.org/1.67.1/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="type"href="../prelude/type.AttrString.html"title="type kanidmd_lib::prelude::AttrString">AttrString</a>></code></span><divclass="docblock"><p>A list of classes that can not co-exist with this item at the same time.</p>
</div></details></div></details><detailsclass="rustdoc-toggle implementors-toggle"><summary><sectionid="impl-Instrument-for-SchemaClass"class="impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><ahref="#impl-Instrument-for-SchemaClass"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html"title="trait tracing::instrument::Instrument">Instrument</a> for T</h3></section></summary><divclass="impl-items"><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.instrument"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#82">source</a><ahref="#method.instrument"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument"class="fn">instrument</a>(self, span: <aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"title="struct tracing::span::Span">Span</a>) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.Instrumented.html"title="struct tracing::instrument::Instrumented">Instrumented</a><Self></h4></section></summary><divclass='docblock'>Instruments this type with the provided <ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"title="Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.in_current_span"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><ahref="#method.in_current_span"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span"class="fn">in_current_span</a>(self) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.Instrumented.html"title="struct tracing::instrument::Instrumented">Instrumented</a><Self></h4></section></summary><divclass='docblock'>Instruments this type with the <ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html#method.current">current</a><ahref="https://docs.rs/tracing/0.1.37/tracing/span/struct.Span.html"><code>Span</code></a>, returning an
<p>That is, this conversion is whatever the implementation of
<code><ahref="https://doc.rust-lang.org/1.67.1/core/convert/trait.From.html"title="From">From</a><T> for U</code> chooses to do.</p>
</div></details></div></details><detailsclass="rustdoc-toggle implementors-toggle"><summary><sectionid="impl-Pointable-for-SchemaClass"class="impl has-srclink"><ahref="#impl-Pointable-for-SchemaClass"class="anchor">§</a><h3class="code-header">impl<T> Pointable for T</h3></section></summary><divclass="impl-items"><detailsclass="rustdoc-toggle"open><summary><sectionid="associatedconstant.ALIGN"class="associatedconstant trait-impl has-srclink"><ahref="#associatedconstant.ALIGN"class="anchor">§</a><h4class="code-header">const <aclass="constant">ALIGN</a>: <aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.usize.html">usize</a> = mem::align_of::<T>()</h4></section></summary><divclass='docblock'>The alignment of pointer.</div></details><detailsclass="rustdoc-toggle"open><summary><sectionid="associatedtype.Init"class="associatedtype trait-impl has-srclink"><ahref="#associatedtype.Init"class="anchor">§</a><h4class="code-header">type <aclass="associatedtype">Init</a> = T</h4></section></summary><divclass='docblock'>The type for initializers.</div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.init"class="method trait-impl has-srclink"><ahref="#method.init"class="anchor">§</a><h4class="code-header">unsafe fn <aclass="fn">init</a>(init: <T as Pointable>::Init) -><aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.usize.html">usize</a></h4></section></summary><divclass='docblock'>Initializes a with the given initializer. <a>Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.deref"class="method trait-impl has-srclink"><ahref="#method.deref"class="anchor">§</a><h4class="code-header">unsafe fn <aclass="fn">deref</a><'a>(ptr: <aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.usize.html">usize</a>) -><aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.reference.html">&'a </a>T</h4></section></summary><divclass='docblock'>Dereferences the given pointer. <a>Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.deref_mut"class="method trait-impl has-srclink"><ahref="#method.deref_mut"class="anchor">§</a><h4class="code-header">unsafe fn <aclass="fn">deref_mut</a><'a>(ptr: <aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.usize.html">usize</a>) -><aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.reference.html">&'a mut </a>T</h4></section></summary><divclass='docblock'>Mutably dereferences the given pointer. <a>Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.drop"class="method trait-impl has-srclink"><ahref="#method.drop"class="anchor">§</a><h4class="code-header">unsafe fn <aclass="fn">drop</a>(ptr: <aclass="primitive"href="https://doc.rust-lang.org/1.67.1/std/primitive.usize.html">usize</a>)</h4></section></summary><divclass='docblock'>Drops the object pointed to by the given pointer. <a>Read more</a></div></details></div></details><detailsclass="rustdoc-toggle implementors-toggle"><summary><sectionid="impl-Same%3CT%3E-for-SchemaClass"class="impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/typenum/1.16.0/src/typenum/type_operators.rs.html#34">source</a><ahref="#impl-Same%3CT%3E-for-SchemaClass"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://docs.rs/typenum/1.16.0/typenum/type_operators/trait.Same.html"title="trait typenum::type_operators::Same">Same</a><T> for T</h3></section></summary><divclass="impl-items"><detailsclass="rustdoc-toggle"open><summary><sectionid="associatedtype.Output"class="associatedtype trait-impl has-srclink"><ahref="#associatedtype.Output"class="anchor">§</a><h4class="code-header">type <ahref="https://docs.rs/typenum/1.16.0/typenum/type_operators/trait.Same.html#associatedtype.Outp
<ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html"title="WithDispatch"><code>WithDispatch</code></a> wrapper. <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_subscriber">Read more</a></div></details><detailsclass="rustdoc-toggle method-toggle"open><summary><sectionid="method.with_current_subscriber"class="method trait-impl has-srclink"><aclass="srclink rightside"href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#221">source</a><ahref="#method.with_current_subscriber"class="anchor">§</a><h4class="code-header">fn <ahref="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_current_subscriber"class="fn">with_current_subscriber</a>(self) -><aclass="struct"href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html"title="struct tracing::instrument::WithDispatch">WithDispatch</a><Self></h4></section></summary><divclass='docblock'>Attaches the current <ahref="https://docs.rs/tracing/0.1.37/tracing/dispatcher/index.html#setting-the-default-subscriber">default</a><ahref="https://docs.rs/tracing-core/0.1.22/tracing_core/subscriber/trait.Subscriber.html"><code>Subscriber</code></a> to this type, returning a