From e25fc9627a286333dc8895eeba54cdd4ba90c098 Mon Sep 17 00:00:00 2001 From: sminez Date: Sat, 31 Aug 2024 09:07:22 +0000 Subject: [PATCH] deploy: c8f04abe486807d2ce0eebe2f2a27443d17f3486 --- .../layout/transformers/struct.Gaps.html | 4 +- .../struct.ReflectHorizontal.html | 4 +- .../transformers/struct.ReflectVertical.html | 4 +- .../transformers/struct.ReserveTop.html | 4 +- .../penrose/core/hooks/trait.ManageHook.html | 2 +- rustdoc/penrose/core/struct.Xid.html | 2 +- rustdoc/penrose/enum.Error.html | 2 +- .../fn.create_or_switch_to_workspace.html | 2 +- .../extensions/actions/fn.focus_or_spawn.html | 2 +- .../actions/fn.set_fullscreen_state.html | 2 +- .../actions/fn.switch_to_workspace.html | 2 +- .../actions/fn.toggle_fullscreen.html | 2 +- rustdoc/penrose/extensions/actions/index.html | 2 +- .../extensions/hooks/ewmh/fn.event_hook.html | 2 +- .../hooks/ewmh/fn.refresh_hook.html | 2 +- .../penrose/extensions/hooks/ewmh/index.html | 2 +- .../penrose/pure/geometry/struct.Point.html | 2 +- rustdoc/penrose/pure/struct.Stack.html | 2 +- rustdoc/penrose/pure/struct.StackSet.html | 154 +++++++++--------- rustdoc/penrose/pure/struct.Workspace.html | 2 +- rustdoc/penrose/struct.Color.html | 4 +- rustdoc/penrose/struct.Xid.html | 2 +- .../x/event/enum.ClientMessageData.html | 4 +- rustdoc/penrose/x/event/enum.XEvent.html | 2 +- rustdoc/penrose/x/index.html | 2 +- .../x/property/struct.WmHintsFlags.html | 14 +- .../x/property/struct.WmNormalHintsFlags.html | 16 +- rustdoc/penrose/x/trait.XConnExt.html | 34 ++-- rustdoc/penrose/x11rb/struct.Conn.html | 16 +- rustdoc/penrose_ui/enum.Error.html | 2 +- rustdoc/search-index.js | 4 +- .../penrose/extensions/actions/mod.rs.html | 8 +- .../src/penrose/extensions/hooks/ewmh.rs.html | 6 +- rustdoc/src/penrose/pure/stack_set.rs.html | 4 + rustdoc/src/penrose/util.rs.html | 10 +- rustdoc/src/penrose/x/mod.rs.html | 46 ++++-- rustdoc/src/penrose_ui/bar/schedule.rs.html | 6 +- rustdoc/type.impl/core/result/enum.Result.js | 4 +- .../type.impl/penrose/pure/struct.StackSet.js | 2 +- 39 files changed, 210 insertions(+), 176 deletions(-) diff --git a/rustdoc/penrose/builtin/layout/transformers/struct.Gaps.html b/rustdoc/penrose/builtin/layout/transformers/struct.Gaps.html index a6f0755d..acc808d0 100644 --- a/rustdoc/penrose/builtin/layout/transformers/struct.Gaps.html +++ b/rustdoc/penrose/builtin/layout/transformers/struct.Gaps.html @@ -50,7 +50,7 @@ ) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)
Generate screen positions for clients from a given Stack. Read more
source§

fn layout_empty( &mut self, r: Rect, -) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where +) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where Self: Sized + 'static,

Convert to a trait object.
source§

impl<T, X> LayoutHook<X> for T
where T: LayoutTransformer, X: XConn,

source§

fn transform_initial(&mut self, r: Rect, _: &State<X>, _: &X) -> Rect

Optionally modify the screen dimensions being given to a Layout
source§

fn transform_positions( @@ -76,7 +76,7 @@ ) -> Vec<(Xid, Rect)>

Optionally modify the client positions returned by a Layout on a particular screen index. Read more
source§

fn then<H>(self, next: H) -> ComposedLayoutHook<X>
where H: LayoutHook<X> + 'static, - Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where + Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static,

Convert to a trait object
source§

fn then_boxed(self, next: Box<dyn LayoutHook<X>>) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static, X: 'static,

Compose this hook with a boxed LayoutHook.
source§

impl<T> ToOwned for T
where diff --git a/rustdoc/penrose/builtin/layout/transformers/struct.ReflectHorizontal.html b/rustdoc/penrose/builtin/layout/transformers/struct.ReflectHorizontal.html index c2cac927..b1e77b43 100644 --- a/rustdoc/penrose/builtin/layout/transformers/struct.ReflectHorizontal.html +++ b/rustdoc/penrose/builtin/layout/transformers/struct.ReflectHorizontal.html @@ -36,7 +36,7 @@ ) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for clients from a given Stack. Read more
source§

fn layout_empty( &mut self, r: Rect, -) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where +) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where Self: Sized + 'static,

Convert to a trait object.
source§

impl<T, X> LayoutHook<X> for T
where T: LayoutTransformer, X: XConn,

source§

fn transform_initial(&mut self, r: Rect, _: &State<X>, _: &X) -> Rect

Optionally modify the screen dimensions being given to a Layout
source§

fn transform_positions( @@ -62,7 +62,7 @@ ) -> Vec<(Xid, Rect)>

Optionally modify the client positions returned by a Layout on a particular screen index. Read more
source§

fn then<H>(self, next: H) -> ComposedLayoutHook<X>
where H: LayoutHook<X> + 'static, - Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where + Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static,

Convert to a trait object
source§

fn then_boxed(self, next: Box<dyn LayoutHook<X>>) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static, X: 'static,

Compose this hook with a boxed LayoutHook.
source§

impl<T> ToOwned for T
where diff --git a/rustdoc/penrose/builtin/layout/transformers/struct.ReflectVertical.html b/rustdoc/penrose/builtin/layout/transformers/struct.ReflectVertical.html index 41c8b062..aa967fa2 100644 --- a/rustdoc/penrose/builtin/layout/transformers/struct.ReflectVertical.html +++ b/rustdoc/penrose/builtin/layout/transformers/struct.ReflectVertical.html @@ -36,7 +36,7 @@ ) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for clients from a given Stack. Read more
source§

fn layout_empty( &mut self, r: Rect, -) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where +) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where Self: Sized + 'static,

Convert to a trait object.
source§

impl<T, X> LayoutHook<X> for T
where T: LayoutTransformer, X: XConn,

source§

fn transform_initial(&mut self, r: Rect, _: &State<X>, _: &X) -> Rect

Optionally modify the screen dimensions being given to a Layout
source§

fn transform_positions( @@ -62,7 +62,7 @@ ) -> Vec<(Xid, Rect)>

Optionally modify the client positions returned by a Layout on a particular screen index. Read more
source§

fn then<H>(self, next: H) -> ComposedLayoutHook<X>
where H: LayoutHook<X> + 'static, - Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where + Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static,

Convert to a trait object
source§

fn then_boxed(self, next: Box<dyn LayoutHook<X>>) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static, X: 'static,

Compose this hook with a boxed LayoutHook.
source§

impl<T> ToOwned for T
where diff --git a/rustdoc/penrose/builtin/layout/transformers/struct.ReserveTop.html b/rustdoc/penrose/builtin/layout/transformers/struct.ReserveTop.html index 472b7c64..615458ea 100644 --- a/rustdoc/penrose/builtin/layout/transformers/struct.ReserveTop.html +++ b/rustdoc/penrose/builtin/layout/transformers/struct.ReserveTop.html @@ -42,7 +42,7 @@ ) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for clients from a given Stack. Read more
source§

fn layout_empty( &mut self, r: Rect, -) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where +) -> (Option<Box<dyn Layout>>, Vec<(Xid, Rect)>)

Generate screen positions for an empty Stack. Read more
source§

fn handle_message(&mut self, m: &Message) -> Option<Box<dyn Layout>>

Process a dynamic Message. Read more
source§

fn boxed(self) -> Box<dyn Layout>
where Self: Sized + 'static,

Convert to a trait object.
source§

impl<T, X> LayoutHook<X> for T
where T: LayoutTransformer, X: XConn,

source§

fn transform_initial(&mut self, r: Rect, _: &State<X>, _: &X) -> Rect

Optionally modify the screen dimensions being given to a Layout
source§

fn transform_positions( @@ -68,7 +68,7 @@ ) -> Vec<(Xid, Rect)>

Optionally modify the client positions returned by a Layout on a particular screen index. Read more
source§

fn then<H>(self, next: H) -> ComposedLayoutHook<X>
where H: LayoutHook<X> + 'static, - Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where + Self: Sized + 'static,

Compose this hook with another LayoutHook.
source§

fn boxed(self) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static,

Convert to a trait object
source§

fn then_boxed(self, next: Box<dyn LayoutHook<X>>) -> Box<dyn LayoutHook<X>>
where Self: Sized + 'static, X: 'static,

Compose this hook with a boxed LayoutHook.
source§

impl<T> ToOwned for T
where diff --git a/rustdoc/penrose/core/hooks/trait.ManageHook.html b/rustdoc/penrose/core/hooks/trait.ManageHook.html index 8ab5d3bb..9779561a 100644 --- a/rustdoc/penrose/core/hooks/trait.ManageHook.html +++ b/rustdoc/penrose/core/hooks/trait.ManageHook.html @@ -31,4 +31,4 @@ H: ManageHook<X>,

source§

fn call(&mut self, id: Xid, state: &mut State<X>, x: &X) -> Result<()>

Implementors§

source§

impl<F, X> ManageHook<X> for F
where F: FnMut(Xid, &mut State<X>, &X) -> Result<()>, X: XConn,

source§

impl<X> ManageHook<X> for ComposedManageHook<X>
where - X: XConn,

source§

impl<X: XConn> ManageHook<X> for DefaultTiled

source§

impl<X: XConn> ManageHook<X> for FloatingCentered

source§

impl<X: XConn> ManageHook<X> for FloatingFixed

source§

impl<X: XConn> ManageHook<X> for FloatingRelative

source§

impl<X: XConn> ManageHook<X> for SetWorkspace

\ No newline at end of file + X: XConn,
source§

impl<X: XConn> ManageHook<X> for DefaultTiled

source§

impl<X: XConn> ManageHook<X> for FloatingCentered

source§

impl<X: XConn> ManageHook<X> for FloatingFixed

source§

impl<X: XConn> ManageHook<X> for FloatingRelative

source§

impl<X: XConn> ManageHook<X> for SetWorkspace

\ No newline at end of file diff --git a/rustdoc/penrose/core/struct.Xid.html b/rustdoc/penrose/core/struct.Xid.html index 5471c63e..d0b54543 100644 --- a/rustdoc/penrose/core/struct.Xid.html +++ b/rustdoc/penrose/core/struct.Xid.html @@ -1,5 +1,5 @@ Xid in penrose::core - Rust

Struct penrose::core::Xid

source ·
pub struct Xid(/* private fields */);
Expand description

An X11 ID for a given resource

-

Methods from Deref<Target = u32>§

1.43.0 · source

pub const MIN: u32 = 0u32

1.43.0 · source

pub const MAX: u32 = 4_294_967_295u32

1.53.0 · source

pub const BITS: u32 = 32u32

Trait Implementations§

source§

impl Clone for Xid

source§

fn clone(&self) -> Xid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Xid

source§

fn default() -> Xid

Returns the “default value” for a type. Read more
source§

impl Deref for Xid

§

type Target = u32

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Display for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Xid> for u32

source§

fn from(id: Xid) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Xid

source§

fn from(id: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Xid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Methods from Deref<Target = u32>§

1.43.0 · source

pub const MIN: u32 = 0u32

1.43.0 · source

pub const MAX: u32 = 4_294_967_295u32

1.53.0 · source

pub const BITS: u32 = 32u32

Trait Implementations§

source§

impl Clone for Xid

source§

fn clone(&self) -> Xid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Xid

source§

fn default() -> Xid

Returns the “default value” for a type. Read more
source§

impl Deref for Xid

§

type Target = u32

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Display for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Xid> for u32

source§

fn from(id: Xid) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Xid

source§

fn from(id: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Xid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Xid

source§

fn cmp(&self, other: &Xid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/rustdoc/penrose/enum.Error.html b/rustdoc/penrose/enum.Error.html index 4eb31599..28a2716f 100644 --- a/rustdoc/penrose/enum.Error.html +++ b/rustdoc/penrose/enum.Error.html @@ -83,7 +83,7 @@
§

X11rbReplyError(ReplyError)

An error that occurred with some request.

§

X11rbReplyOrIdError(ReplyOrIdError)

An error caused by some request or by the exhaustion of IDs.

§

X11rbX11Error(X11Error)

Representation of an X11 error packet that was sent by the server.

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type based access to context intended for error reports. Read more
source§

impl From<ConnectError> for Error

source§

fn from(source: ConnectError) -> Self

Converts to this type from the input type.
source§

impl From<ConnectionError> for Error

source§

fn from(source: ConnectionError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<FromUtf8Error> for Error

source§

fn from(source: FromUtf8Error) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(source: ParseIntError) -> Self

Converts to this type from the input type.
source§

impl From<ReplyError> for Error

source§

fn from(source: ReplyError) -> Self

Converts to this type from the input type.
source§

impl From<ReplyOrIdError> for Error

source§

fn from(source: ReplyOrIdError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type based access to context intended for error reports. Read more
source§

impl From<ConnectError> for Error

source§

fn from(source: ConnectError) -> Self

Converts to this type from the input type.
source§

impl From<ConnectionError> for Error

source§

fn from(source: ConnectionError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<FromUtf8Error> for Error

source§

fn from(source: FromUtf8Error) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(source: ParseIntError) -> Self

Converts to this type from the input type.
source§

impl From<ReplyError> for Error

source§

fn from(source: ReplyError) -> Self

Converts to this type from the input type.
source§

impl From<ReplyOrIdError> for Error

source§

fn from(source: ReplyOrIdError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/penrose/extensions/actions/fn.create_or_switch_to_workspace.html b/rustdoc/penrose/extensions/actions/fn.create_or_switch_to_workspace.html index 6f78f231..0d2f0fa7 100644 --- a/rustdoc/penrose/extensions/actions/fn.create_or_switch_to_workspace.html +++ b/rustdoc/penrose/extensions/actions/fn.create_or_switch_to_workspace.html @@ -1,4 +1,4 @@ -create_or_switch_to_workspace in penrose::extensions::actions - Rust
pub fn create_or_switch_to_workspace<X>(
+create_or_switch_to_workspace in penrose::extensions::actions - Rust
pub fn create_or_switch_to_workspace<X>(
     get_name: fn() -> Option<String>,
     layouts: LayoutStack,
 ) -> Box<dyn KeyEventHandler<X>>
where diff --git a/rustdoc/penrose/extensions/actions/fn.focus_or_spawn.html b/rustdoc/penrose/extensions/actions/fn.focus_or_spawn.html index 5d67a602..683b33b4 100644 --- a/rustdoc/penrose/extensions/actions/fn.focus_or_spawn.html +++ b/rustdoc/penrose/extensions/actions/fn.focus_or_spawn.html @@ -1,4 +1,4 @@ -focus_or_spawn in penrose::extensions::actions - Rust

Function penrose::extensions::actions::focus_or_spawn

source ·
pub fn focus_or_spawn<X>(
+focus_or_spawn in penrose::extensions::actions - Rust

Function penrose::extensions::actions::focus_or_spawn

source ·
pub fn focus_or_spawn<X>(
     class: &'static str,
     command: &'static str,
 ) -> Box<dyn KeyEventHandler<X>>
where diff --git a/rustdoc/penrose/extensions/actions/fn.set_fullscreen_state.html b/rustdoc/penrose/extensions/actions/fn.set_fullscreen_state.html index 735356ae..7f0aa4ba 100644 --- a/rustdoc/penrose/extensions/actions/fn.set_fullscreen_state.html +++ b/rustdoc/penrose/extensions/actions/fn.set_fullscreen_state.html @@ -1,4 +1,4 @@ -set_fullscreen_state in penrose::extensions::actions - Rust

Function penrose::extensions::actions::set_fullscreen_state

source ·
pub fn set_fullscreen_state<X: XConn>(
+set_fullscreen_state in penrose::extensions::actions - Rust

Function penrose::extensions::actions::set_fullscreen_state

source ·
pub fn set_fullscreen_state<X: XConn>(
     id: Xid,
     action: FullScreenAction,
     state: &mut State<X>,
diff --git a/rustdoc/penrose/extensions/actions/fn.switch_to_workspace.html b/rustdoc/penrose/extensions/actions/fn.switch_to_workspace.html
index 0f807fe1..bb1bce00 100644
--- a/rustdoc/penrose/extensions/actions/fn.switch_to_workspace.html
+++ b/rustdoc/penrose/extensions/actions/fn.switch_to_workspace.html
@@ -1,4 +1,4 @@
-switch_to_workspace in penrose::extensions::actions - Rust

Function penrose::extensions::actions::switch_to_workspace

source ·
pub fn switch_to_workspace<X>(
+switch_to_workspace in penrose::extensions::actions - Rust

Function penrose::extensions::actions::switch_to_workspace

source ·
pub fn switch_to_workspace<X>(
     select_name: fn(_: &[String]) -> Option<String>,
 ) -> Box<dyn KeyEventHandler<X>>
where X: XConn,
Expand description

Jump to a Workspace by name.

diff --git a/rustdoc/penrose/extensions/actions/fn.toggle_fullscreen.html b/rustdoc/penrose/extensions/actions/fn.toggle_fullscreen.html index 4728e380..b0cd306f 100644 --- a/rustdoc/penrose/extensions/actions/fn.toggle_fullscreen.html +++ b/rustdoc/penrose/extensions/actions/fn.toggle_fullscreen.html @@ -1,4 +1,4 @@ -toggle_fullscreen in penrose::extensions::actions - Rust

Function penrose::extensions::actions::toggle_fullscreen

source ·
pub fn toggle_fullscreen<X: XConn>() -> Box<dyn KeyEventHandler<X>>
Expand description

Toggle the fullscreen state of the currently focused window.

+toggle_fullscreen in penrose::extensions::actions - Rust

Function penrose::extensions::actions::toggle_fullscreen

source ·
pub fn toggle_fullscreen<X: XConn>() -> Box<dyn KeyEventHandler<X>>
Expand description

Toggle the fullscreen state of the currently focused window.

NOTE: You will need to make use of add_ewmh_hooks for this action to work correctly.

\ No newline at end of file diff --git a/rustdoc/penrose/extensions/actions/index.html b/rustdoc/penrose/extensions/actions/index.html index 21a6ef25..5ec6d37d 100644 --- a/rustdoc/penrose/extensions/actions/index.html +++ b/rustdoc/penrose/extensions/actions/index.html @@ -1,3 +1,3 @@ -penrose::extensions::actions - Rust

Module penrose::extensions::actions

source ·
Expand description

Helpers and pre-defined actions for use in user defined key bindings

+penrose::extensions::actions - Rust

Module penrose::extensions::actions

source ·
Expand description

Helpers and pre-defined actions for use in user defined key bindings

Enums§

  • The possible valid actions to use when manipulating full screen state

Functions§

\ No newline at end of file diff --git a/rustdoc/penrose/extensions/hooks/ewmh/fn.event_hook.html b/rustdoc/penrose/extensions/hooks/ewmh/fn.event_hook.html index 2d146a35..e55eb154 100644 --- a/rustdoc/penrose/extensions/hooks/ewmh/fn.event_hook.html +++ b/rustdoc/penrose/extensions/hooks/ewmh/fn.event_hook.html @@ -1,4 +1,4 @@ -event_hook in penrose::extensions::hooks::ewmh - Rust

Function penrose::extensions::hooks::ewmh::event_hook

source ·
pub fn event_hook<X: XConn>(
+event_hook in penrose::extensions::hooks::ewmh - Rust

Function penrose::extensions::hooks::ewmh::event_hook

source ·
pub fn event_hook<X: XConn>(
     event: &XEvent,
     state: &mut State<X>,
     x: &X,
diff --git a/rustdoc/penrose/extensions/hooks/ewmh/fn.refresh_hook.html b/rustdoc/penrose/extensions/hooks/ewmh/fn.refresh_hook.html
index e5080691..3125f3c7 100644
--- a/rustdoc/penrose/extensions/hooks/ewmh/fn.refresh_hook.html
+++ b/rustdoc/penrose/extensions/hooks/ewmh/fn.refresh_hook.html
@@ -1,2 +1,2 @@
-refresh_hook in penrose::extensions::hooks::ewmh - Rust

Function penrose::extensions::hooks::ewmh::refresh_hook

source ·
pub fn refresh_hook<X: XConn>(state: &mut State<X>, x: &X) -> Result<()>
Expand description

Notify external clients of the current status of workspaces and clients

+refresh_hook in penrose::extensions::hooks::ewmh - Rust

Function penrose::extensions::hooks::ewmh::refresh_hook

source ·
pub fn refresh_hook<X: XConn>(state: &mut State<X>, x: &X) -> Result<()>
Expand description

Notify external clients of the current status of workspaces and clients

\ No newline at end of file diff --git a/rustdoc/penrose/extensions/hooks/ewmh/index.html b/rustdoc/penrose/extensions/hooks/ewmh/index.html index 6c2e6b2f..072b9676 100644 --- a/rustdoc/penrose/extensions/hooks/ewmh/index.html +++ b/rustdoc/penrose/extensions/hooks/ewmh/index.html @@ -1,4 +1,4 @@ -penrose::extensions::hooks::ewmh - Rust

Module penrose::extensions::hooks::ewmh

source ·
Expand description

EWMH compliance for Penrose

+penrose::extensions::hooks::ewmh - Rust

Module penrose::extensions::hooks::ewmh

source ·
Expand description

EWMH compliance for Penrose

The primary use of this extension is to provide support for external status bars / panels and fullscreen windows.

See details of the spec here: diff --git a/rustdoc/penrose/pure/geometry/struct.Point.html b/rustdoc/penrose/pure/geometry/struct.Point.html index 5d157963..35f3792a 100644 --- a/rustdoc/penrose/pure/geometry/struct.Point.html +++ b/rustdoc/penrose/pure/geometry/struct.Point.html @@ -5,7 +5,7 @@

Fields§

§x: u32

An absolute x coordinate relative to the root window

§y: u32

An absolute y coordinate relative to the root window

Implementations§

source§

impl Point

source

pub fn new(x: u32, y: u32) -> Self

Create a new Point.

-

Trait Implementations§

source§

impl Clone for Point

source§

fn clone(&self) -> Point

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Point

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Point

source§

fn default() -> Point

Returns the “default value” for a type. Read more
source§

impl From<&Rect> for Point

source§

fn from(r: &Rect) -> Self

Converts to this type from the input type.
source§

impl From<(&u32, &u32)> for Point

source§

fn from(raw: (&u32, &u32)) -> Self

Converts to this type from the input type.
source§

impl From<(u32, u32)> for Point

source§

fn from(raw: (u32, u32)) -> Self

Converts to this type from the input type.
source§

impl From<Rect> for Point

source§

fn from(r: Rect) -> Self

Converts to this type from the input type.
source§

impl Hash for Point

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Point

source§

fn clone(&self) -> Point

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Point

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Point

source§

fn default() -> Point

Returns the “default value” for a type. Read more
source§

impl From<&Rect> for Point

source§

fn from(r: &Rect) -> Self

Converts to this type from the input type.
source§

impl From<(&u32, &u32)> for Point

source§

fn from(raw: (&u32, &u32)) -> Self

Converts to this type from the input type.
source§

impl From<(u32, u32)> for Point

source§

fn from(raw: (u32, u32)) -> Self

Converts to this type from the input type.
source§

impl From<Rect> for Point

source§

fn from(r: Rect) -> Self

Converts to this type from the input type.
source§

impl Hash for Point

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Point

source§

fn eq(&self, other: &Point) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/rustdoc/penrose/pure/struct.Stack.html b/rustdoc/penrose/pure/struct.Stack.html index 05ca1586..dd16b888 100644 --- a/rustdoc/penrose/pure/struct.Stack.html +++ b/rustdoc/penrose/pure/struct.Stack.html @@ -95,7 +95,7 @@
source

pub fn focus_element(&mut self, t: &T)

Attempt to focus a given element in the Stack if it is present.

If the requested element is not found, the Stack will be left in its original state.

-

Trait Implementations§

source§

impl<T: Clone> Clone for Stack<T>

source§

fn clone(&self) -> Stack<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Stack<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Default> Default for Stack<T>

source§

fn default() -> Stack<T>

Returns the “default value” for a type. Read more
source§

impl<T: Display> Display for Stack<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T> IntoIterator for &'a Stack<T>

§

type Item = &'a T

The type of the elements being iterated over.
§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Iter<'a, T>

Creates an iterator from a value. Read more
source§

impl<'a, T> IntoIterator for &'a mut Stack<T>

§

type Item = &'a mut T

The type of the elements being iterated over.
§

type IntoIter = IterMut<'a, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> IterMut<'a, T>

Creates an iterator from a value. Read more
source§

impl<T> IntoIterator for Stack<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> IntoIter<T>

Creates an iterator from a value. Read more
source§

impl<T: PartialEq> PartialEq for Stack<T>

source§

fn eq(&self, other: &Stack<T>) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<T: Clone> Clone for Stack<T>

source§

fn clone(&self) -> Stack<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Stack<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Default> Default for Stack<T>

source§

fn default() -> Stack<T>

Returns the “default value” for a type. Read more
source§

impl<T: Display> Display for Stack<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, T> IntoIterator for &'a Stack<T>

§

type Item = &'a T

The type of the elements being iterated over.
§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Iter<'a, T>

Creates an iterator from a value. Read more
source§

impl<'a, T> IntoIterator for &'a mut Stack<T>

§

type Item = &'a mut T

The type of the elements being iterated over.
§

type IntoIter = IterMut<'a, T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> IterMut<'a, T>

Creates an iterator from a value. Read more
source§

impl<T> IntoIterator for Stack<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> IntoIter<T>

Creates an iterator from a value. Read more
source§

impl<T: PartialEq> PartialEq for Stack<T>

source§

fn eq(&self, other: &Stack<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Eq> Eq for Stack<T>

source§

impl<T> StructuralPartialEq for Stack<T>

Auto Trait Implementations§

§

impl<T> Freeze for Stack<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Stack<T>
where diff --git a/rustdoc/penrose/pure/struct.StackSet.html b/rustdoc/penrose/pure/struct.StackSet.html index ac0c2c77..91490713 100644 --- a/rustdoc/penrose/pure/struct.StackSet.html +++ b/rustdoc/penrose/pure/struct.StackSet.html @@ -1,7 +1,7 @@ -StackSet in penrose::pure - Rust

Struct penrose::pure::StackSet

source ·
pub struct StackSet<C>
where +StackSet in penrose::pure - Rust

Struct penrose::pure::StackSet

source ·
pub struct StackSet<C>
where C: Clone + PartialEq + Eq + Hash,
{ /* private fields */ }
Expand description

The side-effect free internal state representation of the window manager.

-

Implementations§

source§

impl<C> StackSet<C>
where - C: Clone + PartialEq + Eq + Hash,

source

pub fn try_new<I, J, T>( +

Implementations§

source§

impl<C> StackSet<C>
where + C: Clone + PartialEq + Eq + Hash,

source

pub fn try_new<I, J, T>( layouts: LayoutStack, ws_tags: I, screen_details: J, @@ -12,122 +12,122 @@

§Errors

This method will error if there are not enough workspaces to cover the attached screens or if no screens are attached.

-
source

pub fn focus_screen(&mut self, screen_index: usize)

Set focus to the Screen with the specified index.

+
source

pub fn focus_screen(&mut self, screen_index: usize)

Set focus to the Screen with the specified index.

If there is no matching screen then the StackSet is unmodified.

-
source

pub fn focus_tag(&mut self, tag: impl AsRef<str>)

Set focus to the Workspace with the specified tag.

+
source

pub fn focus_tag(&mut self, tag: impl AsRef<str>)

Set focus to the Workspace with the specified tag.

If there is no matching workspace then the StackSet is unmodified. If the Workspace is currently visible then focus moves to the screen containing that workspace, otherwise the workspace replaces whatever was on the active screen.

If you always want to focus the given tag on the active screen, see StackSet::pull_tag_to_screen instead.

-
source

pub fn pull_tag_to_screen(&mut self, tag: impl AsRef<str>)

Focus the requested tag on the current screen, swapping the current +

source

pub fn pull_tag_to_screen(&mut self, tag: impl AsRef<str>)

Focus the requested tag on the current screen, swapping the current tag with it.

-
source

pub fn toggle_tag(&mut self)

Toggle focus back to the previously focused Workspace based on its tag

-
source

pub fn focus_client(&mut self, client: &C)

Focus the given client and set its Workspace as current (see +

source

pub fn toggle_tag(&mut self)

Toggle focus back to the previously focused Workspace based on its tag

+
source

pub fn focus_client(&mut self, client: &C)

Focus the given client and set its Workspace as current (see focus_tag).

If the client is unknown then this is a no-op.

-
source

pub fn insert(&mut self, client: C)

Insert the given client to the current Stack in a default Position.

-
source

pub fn insert_at(&mut self, pos: Position, client: C)

Insert the given client to the current Stack at the requested Position. +

source

pub fn insert(&mut self, client: C)

Insert the given client to the current Stack in a default Position.

+
source

pub fn insert_at(&mut self, pos: Position, client: C)

Insert the given client to the current Stack at the requested Position. If the client is already present somewhere in the StackSet the stack_set is unmodified.

-
source

pub fn sink(&mut self, client: &C) -> Option<Rect>

Clear the floating status of a client, returning its previous preferred +

source

pub fn sink(&mut self, client: &C) -> Option<Rect>

Clear the floating status of a client, returning its previous preferred screen position if the client was known, otherwise None.

-
source

pub fn is_floating(&self, client: &C) -> bool

Check whether a given client is currently floating.

-
source

pub fn has_floating_windows(&self, tag: impl AsRef<str>) -> bool

Check whether a given tag currently has any floating windows present.

+
source

pub fn is_floating(&self, client: &C) -> bool

Check whether a given client is currently floating.

+
source

pub fn has_floating_windows(&self, tag: impl AsRef<str>) -> bool

Check whether a given tag currently has any floating windows present.

Returns false if the tag given is unknown to this StackSet.

-
source

pub fn remove_client(&mut self, client: &C) -> Option<C>

Delete a client from this StackSet.

-
source

pub fn remove_focused(&mut self) -> Option<C>

Remove the currently focused client from this stack if there is one.

+
source

pub fn remove_client(&mut self, client: &C) -> Option<C>

Delete a client from this StackSet.

+
source

pub fn remove_focused(&mut self) -> Option<C>

Remove the currently focused client from this stack if there is one.

The client is returned to the caller as Some(C) if there was one.

-
source

pub fn kill_focused(&mut self)

Delete the currently focused client from this stack if there is one.

+
source

pub fn kill_focused(&mut self)

Delete the currently focused client from this stack if there is one.

The following diff will send a kill client message to this client on refresh.

-
source

pub fn move_focused_to_tag(&mut self, tag: impl AsRef<str>)

Move the focused client of the current Workspace to the focused position +

source

pub fn move_focused_to_tag(&mut self, tag: impl AsRef<str>)

Move the focused client of the current Workspace to the focused position of the workspace matching the provided tag.

-
source

pub fn move_focused_to_screen(&mut self, screen: usize)

Move the focused client of the current Workspace to the focused position +

source

pub fn move_focused_to_screen(&mut self, screen: usize)

Move the focused client of the current Workspace to the focused position of the workspace on Screen screen.

-
source

pub fn move_client_to_tag(&mut self, client: &C, tag: impl AsRef<str>)

Move the given client to the focused position of the Workspace matching +

source

pub fn move_client_to_tag(&mut self, client: &C, tag: impl AsRef<str>)

Move the given client to the focused position of the Workspace matching the provided tag. If the client is already on the target workspace it is moved to the focused position.

-
source

pub fn move_client_to_current_tag(&mut self, client: &C)

Move the given client to the focused position of the current Workspace. +

source

pub fn move_client_to_current_tag(&mut self, client: &C)

Move the given client to the focused position of the current Workspace. If the client is already on the target workspace it is moved to the focused position.

-
source

pub fn contains_tag(&self, tag: &str) -> bool

Is the given tag present in the StackSet?

-
source

pub fn ordered_tags(&self) -> Vec<String>

All Workspace tags in this StackSet order by their id that have not been +

source

pub fn contains_tag(&self, tag: &str) -> bool

Is the given tag present in the StackSet?

+
source

pub fn ordered_tags(&self) -> Vec<String>

All Workspace tags in this StackSet order by their id that have not been marked as being invisible.

-
source

pub fn ordered_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

All Workspaces in this StackSet order by their id that have not been +

source

pub fn ordered_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

All Workspaces in this StackSet order by their id that have not been marked as being invisible.

-
source

pub fn focus_next_workspace(&mut self)

Move focus to the Workspace after the currently focused workspace as defined by their +

source

pub fn focus_next_workspace(&mut self)

Move focus to the Workspace after the currently focused workspace as defined by their position in StackSet::ordered_workspaces.

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another screen then it will be pulled to the active screen rather than focus moving to the screen where the tag is currently located.

-
source

pub fn focus_previous_workspace(&mut self)

Move focus to the Workspace before the currently focused workspace as defined by their +

source

pub fn focus_previous_workspace(&mut self)

Move focus to the Workspace before the currently focused workspace as defined by their position in StackSet::ordered_workspaces.

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another screen then it will be pulled to the active screen rather than focus moving to the screen where the tag is currently located.

-
source

pub fn tag_for_screen(&self, index: usize) -> Option<&str>

Find the tag of the Workspace currently displayed on Screen index.

+
source

pub fn tag_for_screen(&self, index: usize) -> Option<&str>

Find the tag of the Workspace currently displayed on Screen index.

Returns None if the index is out of bounds

-
source

pub fn tag_for_client(&self, client: &C) -> Option<&str>

Find the tag of the Workspace containing a given client. +

source

pub fn tag_for_client(&self, client: &C) -> Option<&str>

Find the tag of the Workspace containing a given client. Returns Some(tag) if the client is known otherwise None.

-
source

pub fn screen_for_client(&self, client: &C) -> Option<&Screen<C>>

If the given client is currently visible on a screen return a +

source

pub fn screen_for_client(&self, client: &C) -> Option<&Screen<C>>

If the given client is currently visible on a screen return a reference to that screen, otherwise None.

-
source

pub fn tag_for_workspace_id(&self, id: usize) -> Option<String>

Find the tag of the Workspace with the given NetWmDesktop ID.

-
source

pub fn contains(&self, client: &C) -> bool

Returns true if the StackSet contains an element equal to the given value.

-
source

pub fn current_client(&self) -> Option<&C>

Extract a reference to the focused element of the current Stack

-
source

pub fn current_screen(&self) -> &Screen<C>

An immutable reference to the currently focused Screen

-
source

pub fn current_workspace(&self) -> &Workspace<C>

An immutable reference to the current Workspace

-
source

pub fn current_workspace_mut(&mut self) -> &mut Workspace<C>

A mutable reference to the current Workspace

-
source

pub fn current_stack(&self) -> Option<&Stack<C>>

An immutable reference to the current Stack if there is one

-
source

pub fn current_tag(&self) -> &str

The tag of the current Workspace

-
source

pub fn add_workspace<T>(&mut self, tag: T, layouts: LayoutStack) -> Result<()>
where +

source

pub fn tag_for_workspace_id(&self, id: usize) -> Option<String>

Find the tag of the Workspace with the given NetWmDesktop ID.

+
source

pub fn contains(&self, client: &C) -> bool

Returns true if the StackSet contains an element equal to the given value.

+
source

pub fn current_client(&self) -> Option<&C>

Extract a reference to the focused element of the current Stack

+
source

pub fn current_screen(&self) -> &Screen<C>

An immutable reference to the currently focused Screen

+
source

pub fn current_workspace(&self) -> &Workspace<C>

An immutable reference to the current Workspace

+
source

pub fn current_workspace_mut(&mut self) -> &mut Workspace<C>

A mutable reference to the current Workspace

+
source

pub fn current_stack(&self) -> Option<&Stack<C>>

An immutable reference to the current Stack if there is one

+
source

pub fn current_tag(&self) -> &str

The tag of the current Workspace

+
source

pub fn add_workspace<T>(&mut self, tag: T, layouts: LayoutStack) -> Result<()>
where T: Into<String>,

Add a new Workspace to this StackSet.

The id assigned to this workspace will be max(workspace ids) + 1.

§Errors

This function will error with NonUniqueTags if the given tag is already present.

-
source

pub fn add_invisible_workspace<T>(&mut self, tag: T) -> Result<()>
where +

source

pub fn add_invisible_workspace<T>(&mut self, tag: T) -> Result<()>
where T: Into<String>,

Add a new invisible Workspace to this StackSet.

It will not be possible to focus this workspace on a screen but its state will be tracked and clients can be placed on it. The id assigned to this workspace will be max(workspace ids) + 1.

§Errors

This function will error with NonUniqueTags if the given tag is already present.

-
source

pub fn workspace(&self, tag: &str) -> Option<&Workspace<C>>

A reference to the Workspace with a tag of tag if there is one

-
source

pub fn workspace_mut(&mut self, tag: &str) -> Option<&mut Workspace<C>>

A mutable reference to the Workspace with a tag of tag if there is one

-
source

pub fn next_layout(&mut self)

Switch to the next available Layout on the focused Workspace

-
source

pub fn previous_layout(&mut self)

Switch to the previous available Layout on the focused Workspace

-
source

pub fn set_layout_by_name(&mut self, layout: impl AsRef<str>)

Attempt to set the current Layout by name.

+
source

pub fn workspace(&self, tag: &str) -> Option<&Workspace<C>>

A reference to the Workspace with a tag of tag if there is one

+
source

pub fn workspace_mut(&mut self, tag: &str) -> Option<&mut Workspace<C>>

A mutable reference to the Workspace with a tag of tag if there is one

+
source

pub fn next_layout(&mut self)

Switch to the next available Layout on the focused Workspace

+
source

pub fn previous_layout(&mut self)

Switch to the previous available Layout on the focused Workspace

+
source

pub fn set_layout_by_name(&mut self, layout: impl AsRef<str>)

Attempt to set the current Layout by name.

This is a no-op if the requested layout is already active or if no layout with the given name is available for the active workspace.

-
source

pub fn next_screen(&mut self)

Move focus to the next Screen

-
source

pub fn previous_screen(&mut self)

Move focus to the previous Screen

-
source

pub fn drag_workspace_forward(&mut self)

Drag the focused workspace onto the next Screen, holding focus

-
source

pub fn drag_workspace_backward(&mut self)

Drag the focused workspace onto the previous Screen, holding focus

-
source

pub fn with<T, F>(&self, default: T, f: F) -> T
where +

source

pub fn next_screen(&mut self)

Move focus to the next Screen

+
source

pub fn previous_screen(&mut self)

Move focus to the previous Screen

+
source

pub fn drag_workspace_forward(&mut self)

Drag the focused workspace onto the next Screen, holding focus

+
source

pub fn drag_workspace_backward(&mut self)

Drag the focused workspace onto the previous Screen, holding focus

+
source

pub fn with<T, F>(&self, default: T, f: F) -> T
where F: Fn(&Stack<C>) -> T,

If the current Stack is None, return default otherwise apply the function to it to generate a value

-
source

pub fn modify<F>(&mut self, f: F)
where +

source

pub fn modify<F>(&mut self, f: F)
where F: FnOnce(Option<Stack<C>>) -> Option<Stack<C>>,

Apply a function to modify the current Stack if there is one or compute and inject a default value if it is currently None

-
source

pub fn modify_occupied<F>(&mut self, f: F)
where +

source

pub fn modify_occupied<F>(&mut self, f: F)
where F: FnOnce(Stack<C>) -> Stack<C>,

Apply a function to modify the current Stack if it is non-empty without allowing for emptying it entirely.

-
source

pub fn screens(&self) -> impl Iterator<Item = &Screen<C>>

Iterate over each Screen in this StackSet in an arbitrary order.

-
source

pub fn screens_mut(&mut self) -> impl Iterator<Item = &mut Screen<C>>

Mutably iterate over each Screen in this StackSet in an arbitrary order.

-
source

pub fn workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each Workspace in this StackSet in an arbitrary order.

-
source

pub fn non_hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each non-hidden Workspace in this StackSet in an arbitrary order.

-
source

pub fn workspaces_mut(&mut self) -> impl Iterator<Item = &mut Workspace<C>>

Mutably iterate over each Workspace in this StackSet in an arbitrary order.

-
source

pub fn on_screen_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the Workspace currently displayed on a screen in an arbitrary order.

-
source

pub fn hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

-
source

pub fn hidden_workspaces_mut( +

source

pub fn screens(&self) -> impl Iterator<Item = &Screen<C>>

Iterate over each Screen in this StackSet in an arbitrary order.

+
source

pub fn screens_mut(&mut self) -> impl Iterator<Item = &mut Screen<C>>

Mutably iterate over each Screen in this StackSet in an arbitrary order.

+
source

pub fn workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each Workspace in this StackSet in an arbitrary order.

+
source

pub fn non_hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each non-hidden Workspace in this StackSet in an arbitrary order.

+
source

pub fn workspaces_mut(&mut self) -> impl Iterator<Item = &mut Workspace<C>>

Mutably iterate over each Workspace in this StackSet in an arbitrary order.

+
source

pub fn on_screen_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the Workspace currently displayed on a screen in an arbitrary order.

+
source

pub fn hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

+
source

pub fn hidden_workspaces_mut( &mut self, ) -> impl Iterator<Item = &mut Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

-
source

pub fn clients(&self) -> impl Iterator<Item = &C>

Iterate over each client in this StackSet in an arbitrary order.

-
source

pub fn on_screen_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients present in on-screen Workspaces.

+
source

pub fn clients(&self) -> impl Iterator<Item = &C>

Iterate over each client in this StackSet in an arbitrary order.

+
source

pub fn on_screen_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients present in on-screen Workspaces.

NOTE: this does not mean that every client returned by this iterator is visible on the screen: only that it is currently assigned to a workspace that is displayed on a screen.

-
source

pub fn hidden_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients from workspaces not currently mapped to a screen.

-
source§

impl StackSet<Xid>

source

pub fn float(&mut self, client: Xid, r: Rect) -> Result<()>

Record a known client as floating, giving its preferred screen position.

+
source

pub fn hidden_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients from workspaces not currently mapped to a screen.

+
source§

impl StackSet<Xid>

source

pub fn float(&mut self, client: Xid, r: Rect) -> Result<()>

Record a known client as floating, giving its preferred screen position.

§Errors

This method with return Error::UnknownClient if the given client is not already managed in this stack_set.

@@ -135,7 +135,7 @@
§Errors
not currently mapped to a screen. This is required to determine the correct relative positioning for the floating client as is it is moved between screens.

-
source

pub fn toggle_floating_state( +

source

pub fn toggle_floating_state( &mut self, client: Xid, r: Rect, @@ -148,36 +148,36 @@

§Errors
not currently mapped to a screen. This is required to determine the correct relative positioning for the floating client as is it is moved between screens.

-
source§

impl<C> StackSet<C>
where - C: Clone + PartialEq + Eq + Hash,

source

pub fn focus_up(&mut self)

Move focus from the current element up the Stack, wrapping to +

source§

impl<C> StackSet<C>
where + C: Clone + PartialEq + Eq + Hash,

source

pub fn focus_up(&mut self)

Move focus from the current element up the Stack, wrapping to the bottom if focus is already at the top. This is a no-op if the current stack is empty.

-
source

pub fn focus_down(&mut self)

Move focus from the current element down the Stack, wrapping to +

source

pub fn focus_down(&mut self)

Move focus from the current element down the Stack, wrapping to the top if focus is already at the bottom. This is a no-op if the current stack is empty.

-
source

pub fn swap_up(&mut self)

Swap the position of the focused element with one above it. +

source

pub fn swap_up(&mut self)

Swap the position of the focused element with one above it. The currently focused element is maintained by this operation. This is a no-op if the current stack is empty.

-
source

pub fn swap_down(&mut self)

Swap the position of the focused element with one below it. +

source

pub fn swap_down(&mut self)

Swap the position of the focused element with one below it. The currently focused element is maintained by this operation. This is a no-op if the current stack is empty.

-
source

pub fn rotate_up(&mut self)

Rotate all elements of the stack forward, wrapping from top to bottom. +

source

pub fn rotate_up(&mut self)

Rotate all elements of the stack forward, wrapping from top to bottom. The currently focused position in the stack is maintained by this operation. This is a no-op if the current stack is empty.

-
source

pub fn rotate_down(&mut self)

Rotate all elements of the stack back, wrapping from bottom to top. +

source

pub fn rotate_down(&mut self)

Rotate all elements of the stack back, wrapping from bottom to top. The currently focused position in the stack is maintained by this operation. This is a no-op if the current stack is empty.

-
source

pub fn rotate_focus_to_head(&mut self)

Rotate the Stack until the current focused element is in the head position. +

source

pub fn rotate_focus_to_head(&mut self)

Rotate the Stack until the current focused element is in the head position. This is a no-op if the current stack is empty.

-
source

pub fn focus_head(&mut self)

Move focus to the element in the head position. +

source

pub fn focus_head(&mut self)

Move focus to the element in the head position. This is a no-op if the current stack is empty.

-
source

pub fn swap_focus_and_head(&mut self)

Swap the current head element with the focused element in the +

source

pub fn swap_focus_and_head(&mut self)

Swap the current head element with the focused element in the stack order. Focus stays with the original focused element. This is a no-op if the current stack is empty.

-

Trait Implementations§

source§

impl<C> Clone for StackSet<C>
where - C: Clone + PartialEq + Eq + Hash + Clone,

source§

fn clone(&self) -> StackSet<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C> Debug for StackSet<C>
where - C: Clone + PartialEq + Eq + Hash + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C> Default for StackSet<C>
where - C: Clone + PartialEq + Eq + Hash + Default,

source§

fn default() -> StackSet<C>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<C> Freeze for StackSet<C>
where +

Trait Implementations§

source§

impl<C> Clone for StackSet<C>
where + C: Clone + PartialEq + Eq + Hash + Clone,

source§

fn clone(&self) -> StackSet<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C> Debug for StackSet<C>
where + C: Clone + PartialEq + Eq + Hash + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C> Default for StackSet<C>
where + C: Clone + PartialEq + Eq + Hash + Default,

source§

fn default() -> StackSet<C>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<C> Freeze for StackSet<C>
where C: Freeze,

§

impl<C> !RefUnwindSafe for StackSet<C>

§

impl<C> !Send for StackSet<C>

§

impl<C> !Sync for StackSet<C>

§

impl<C> Unpin for StackSet<C>
where C: Unpin,

§

impl<C> !UnwindSafe for StackSet<C>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/rustdoc/penrose/pure/struct.Workspace.html b/rustdoc/penrose/pure/struct.Workspace.html index 0e535322..d7520ba9 100644 --- a/rustdoc/penrose/pure/struct.Workspace.html +++ b/rustdoc/penrose/pure/struct.Workspace.html @@ -28,7 +28,7 @@ locate such a layout if the current name does not match what you have provided.

source§

impl<T: PartialEq> Workspace<T>

source

pub fn contains(&self, t: &T) -> bool

Check if a given window is currently part of this workspace

-

Trait Implementations§

source§

impl<T: Clone> Clone for Workspace<T>

source§

fn clone(&self) -> Workspace<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Workspace<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Default for Workspace<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T: Display> Display for Workspace<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Workspace<T>
where +

Trait Implementations§

source§

impl<T: Clone> Clone for Workspace<T>

source§

fn clone(&self) -> Workspace<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for Workspace<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Default for Workspace<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T: Display> Display for Workspace<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Workspace<T>
where T: Freeze,

§

impl<T> !RefUnwindSafe for Workspace<T>

§

impl<T> !Send for Workspace<T>

§

impl<T> !Sync for Workspace<T>

§

impl<T> Unpin for Workspace<T>
where T: Unpin,

§

impl<T> !UnwindSafe for Workspace<T>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/rustdoc/penrose/struct.Color.html b/rustdoc/penrose/struct.Color.html index 879665b0..5809f458 100644 --- a/rustdoc/penrose/struct.Color.html +++ b/rustdoc/penrose/struct.Color.html @@ -8,11 +8,11 @@

source

pub fn rgb_u32(&self) -> u32

0xRRGGBB representation of this Color (no alpha information)

source

pub fn rgba_u32(&self) -> u32

0xRRGGBBAA representation of this Color

source

pub fn argb_u32(&self) -> u32

0xAARRGGBB representation of this Color

-

Trait Implementations§

source§

impl Clone for Color

source§

fn clone(&self) -> Color

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Color

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(f64, f64, f64)> for Color

source§

fn from(rgb: (f64, f64, f64)) -> Self

Converts to this type from the input type.
source§

impl From<(f64, f64, f64, f64)> for Color

source§

fn from(rgba: (f64, f64, f64, f64)) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Color

source§

fn from(hex: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Color

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for Color

source§

fn clone(&self) -> Color

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Color

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(f64, f64, f64)> for Color

source§

fn from(rgb: (f64, f64, f64)) -> Self

Converts to this type from the input type.
source§

impl From<(f64, f64, f64, f64)> for Color

source§

fn from(rgba: (f64, f64, f64, f64)) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Color

source§

fn from(hex: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Color

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Color

source§

fn eq(&self, other: &Color) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<&str> for Color

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(s: &str) -> Result<Self>

Performs the conversion.
source§

impl TryFrom<String> for Color

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(s: String) -> Result<Self>

Performs the conversion.
source§

impl Copy for Color

source§

impl Eq for Color

source§

impl StructuralPartialEq for Color

Auto Trait Implementations§

§

impl Freeze for Color

§

impl RefUnwindSafe for Color

§

impl Send for Color

§

impl Sync for Color

§

impl Unpin for Color

§

impl UnwindSafe for Color

Blanket Implementations§

source§

impl<T> Any for T
where +sufficient, and should not be overridden without very good reason.

source§

impl TryFrom<&str> for Color

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(s: &str) -> Result<Self>

Performs the conversion.
source§

impl TryFrom<String> for Color

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(s: String) -> Result<Self>

Performs the conversion.
source§

impl Copy for Color

source§

impl Eq for Color

source§

impl StructuralPartialEq for Color

Auto Trait Implementations§

§

impl Freeze for Color

§

impl RefUnwindSafe for Color

§

impl Send for Color

§

impl Sync for Color

§

impl Unpin for Color

§

impl UnwindSafe for Color

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/penrose/struct.Xid.html b/rustdoc/penrose/struct.Xid.html index fb0c369c..e47ba9d8 100644 --- a/rustdoc/penrose/struct.Xid.html +++ b/rustdoc/penrose/struct.Xid.html @@ -1,5 +1,5 @@ Xid in penrose - Rust

Struct penrose::Xid

source ·
pub struct Xid(/* private fields */);
Expand description

An X11 ID for a given resource

-

Methods from Deref<Target = u32>§

1.43.0 · source

pub const MIN: u32 = 0u32

1.43.0 · source

pub const MAX: u32 = 4_294_967_295u32

1.53.0 · source

pub const BITS: u32 = 32u32

Trait Implementations§

source§

impl Clone for Xid

source§

fn clone(&self) -> Xid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Xid

source§

fn default() -> Xid

Returns the “default value” for a type. Read more
source§

impl Deref for Xid

§

type Target = u32

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Display for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Xid> for u32

source§

fn from(id: Xid) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Xid

source§

fn from(id: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Xid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Methods from Deref<Target = u32>§

1.43.0 · source

pub const MIN: u32 = 0u32

1.43.0 · source

pub const MAX: u32 = 4_294_967_295u32

1.53.0 · source

pub const BITS: u32 = 32u32

Trait Implementations§

source§

impl Clone for Xid

source§

fn clone(&self) -> Xid

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Xid

source§

fn default() -> Xid

Returns the “default value” for a type. Read more
source§

impl Deref for Xid

§

type Target = u32

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Display for Xid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Xid> for u32

source§

fn from(id: Xid) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Xid

source§

fn from(id: u32) -> Self

Converts to this type from the input type.
source§

impl Hash for Xid

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Xid

source§

fn cmp(&self, other: &Xid) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/rustdoc/penrose/x/event/enum.ClientMessageData.html b/rustdoc/penrose/x/event/enum.ClientMessageData.html index b9360e0a..e7975069 100644 --- a/rustdoc/penrose/x/event/enum.ClientMessageData.html +++ b/rustdoc/penrose/x/event/enum.ClientMessageData.html @@ -18,11 +18,11 @@

source§

impl ClientMessageData

source

pub fn as_u32(&self) -> Vec<u32>

Convert this client message into a single data format

The number of raw values will be maintained but this allows you to have a consistant interface without needing to match on the variant or cast all the time.

-

Trait Implementations§

source§

impl Clone for ClientMessageData

source§

fn clone(&self) -> ClientMessageData

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ClientMessageData

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<&[u16; 10]> for ClientMessageData

source§

fn from(data: &[u16; 10]) -> Self

Converts to this type from the input type.
source§

impl From<&[u32; 5]> for ClientMessageData

source§

fn from(data: &[u32; 5]) -> Self

Converts to this type from the input type.
source§

impl From<&[u8; 20]> for ClientMessageData

source§

fn from(data: &[u8; 20]) -> Self

Converts to this type from the input type.
source§

impl From<[u16; 10]> for ClientMessageData

source§

fn from(data: [u16; 10]) -> Self

Converts to this type from the input type.
source§

impl From<[u32; 5]> for ClientMessageData

source§

fn from(data: [u32; 5]) -> Self

Converts to this type from the input type.
source§

impl From<[u8; 20]> for ClientMessageData

source§

fn from(data: [u8; 20]) -> Self

Converts to this type from the input type.
source§

impl Hash for ClientMessageData

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for ClientMessageData

source§

fn clone(&self) -> ClientMessageData

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ClientMessageData

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<&[u16; 10]> for ClientMessageData

source§

fn from(data: &[u16; 10]) -> Self

Converts to this type from the input type.
source§

impl From<&[u32; 5]> for ClientMessageData

source§

fn from(data: &[u32; 5]) -> Self

Converts to this type from the input type.
source§

impl From<&[u8; 20]> for ClientMessageData

source§

fn from(data: &[u8; 20]) -> Self

Converts to this type from the input type.
source§

impl From<[u16; 10]> for ClientMessageData

source§

fn from(data: [u16; 10]) -> Self

Converts to this type from the input type.
source§

impl From<[u32; 5]> for ClientMessageData

source§

fn from(data: [u32; 5]) -> Self

Converts to this type from the input type.
source§

impl From<[u8; 20]> for ClientMessageData

source§

fn from(data: [u8; 20]) -> Self

Converts to this type from the input type.
source§

impl Hash for ClientMessageData

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for ClientMessageData

source§

fn eq(&self, other: &ClientMessageData) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<&[u16]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u16]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&[u32]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u32]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&[u8]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for ClientMessageData

source§

impl StructuralPartialEq for ClientMessageData

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +sufficient, and should not be overridden without very good reason.

source§

impl TryFrom<&[u16]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u16]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&[u32]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u32]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&[u8]> for ClientMessageData

§

type Error = TryFromSliceError

The type returned in the event of a conversion error.
source§

fn try_from(data: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for ClientMessageData

source§

impl StructuralPartialEq for ClientMessageData

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/penrose/x/event/enum.XEvent.html b/rustdoc/penrose/x/event/enum.XEvent.html index 53b7827c..5d0c2a15 100644 --- a/rustdoc/penrose/x/event/enum.XEvent.html +++ b/rustdoc/penrose/x/event/enum.XEvent.html @@ -39,7 +39,7 @@
§

ResizeRequest(ResizeRequestEvent)

A window is requesting that it be resized

§

ScreenChange

Focus has moved to a different screen

§

UnmapNotify(Xid)

A client is being unmapped

-

Trait Implementations§

source§

impl Clone for XEvent

source§

fn clone(&self) -> XEvent

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for XEvent

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for XEvent

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for XEvent

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for XEvent

source§

fn clone(&self) -> XEvent

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for XEvent

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for XEvent

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for XEvent

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for XEvent

source§

fn eq(&self, other: &XEvent) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/rustdoc/penrose/x/index.html b/rustdoc/penrose/x/index.html index 2d48d10e..9c188286 100644 --- a/rustdoc/penrose/x/index.html +++ b/rustdoc/penrose/x/index.html @@ -1,2 +1,2 @@ -penrose::x - Rust

Module penrose::x

source ·
Expand description

Logic for interacting with the X server

+penrose::x - Rust

Module penrose::x

source ·
Expand description

Logic for interacting with the X server

Re-exports§

Modules§

  • Data types for working with X atoms
  • Data types for working with X events
  • Data types for working with X window properties
  • Queries against client windows

Enums§

  • Attributes for an X11 client window (not all are curently implemented)
  • On screen configuration options for X clients (not all are curently implemented)
  • A window type to be specified when creating a new window in the X server

Traits§

  • A handle on a running X11 connection that we can use for issuing X requests.
  • Extended functionality for XConn impls in order to run the window manager.
\ No newline at end of file diff --git a/rustdoc/penrose/x/property/struct.WmHintsFlags.html b/rustdoc/penrose/x/property/struct.WmHintsFlags.html index 4a62be51..c5299ca2 100644 --- a/rustdoc/penrose/x/property/struct.WmHintsFlags.html +++ b/rustdoc/penrose/x/property/struct.WmHintsFlags.html @@ -41,13 +41,13 @@
source

pub const fn iter_names(&self) -> IterNames<WmHintsFlags>

Yield a set of contained named flags values.

This method is like iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.

-

Trait Implementations§

source§

impl Binary for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl BitAnd for WmHintsFlags

source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

-
§

type Output = WmHintsFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for WmHintsFlags

source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

+

Trait Implementations§

source§

impl Binary for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl BitAnd for WmHintsFlags

source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

+
§

type Output = WmHintsFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for WmHintsFlags

source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

source§

impl BitOr for WmHintsFlags

source§

fn bitor(self, other: WmHintsFlags) -> Self

The bitwise or (|) of the bits in two flags values.

§

type Output = WmHintsFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for WmHintsFlags

source§

fn bitor_assign(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

source§

impl BitXor for WmHintsFlags

source§

fn bitxor(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

§

type Output = WmHintsFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for WmHintsFlags

source§

fn bitxor_assign(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

-
source§

impl Clone for WmHintsFlags

source§

fn clone(&self) -> WmHintsFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WmHintsFlags

source§

fn default() -> WmHintsFlags

Returns the “default value” for a type. Read more
source§

impl Extend<WmHintsFlags> for WmHintsFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

+
source§

impl Clone for WmHintsFlags

source§

fn clone(&self) -> WmHintsFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WmHintsFlags

source§

fn default() -> WmHintsFlags

Returns the “default value” for a type. Read more
source§

impl Extend<WmHintsFlags> for WmHintsFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one #72631)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one #72631)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl Flags for WmHintsFlags

source§

const FLAGS: &'static [Flag<WmHintsFlags>] = _

The set of defined flags.
§

type Bits = u32

The underlying bits type.
source§

fn bits(&self) -> u32

Get the underlying bits value. Read more
source§

fn from_bits_retain(bits: u32) -> WmHintsFlags

Convert from a bits value exactly.
§

fn empty() -> Self

Get a flags value with all bits unset.
§

fn all() -> Self

Get a flags value with all known bits set.
§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
§

fn iter(&self) -> Iter<Self>

Yield a set of contained flags values. Read more
§

fn iter_names(&self) -> IterNames<Self>

Yield a set of contained named flags values. Read more
§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in a source flags value are also set in a target flags value.
§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in a source flags value are also set in a target flags value.
§

fn insert(&mut self, other: Self)
where @@ -57,16 +57,16 @@ Self: Sized,

Call [Flags::insert] when value is true or [Flags::remove] when value is false.
§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.
§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.
§

fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!). Read more
§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.
§

fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.
source§

impl FromIterator<WmHintsFlags> for WmHintsFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

The bitwise or (|) of the bits in each flags value.

source§

impl Hash for WmHintsFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoIterator for WmHintsFlags

§

type Item = WmHintsFlags

The type of the elements being iterated over.
§

type IntoIter = Iter<WmHintsFlags>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl LowerHex for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Not for WmHintsFlags

source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

-
§

type Output = WmHintsFlags

The resulting type after applying the ! operator.
source§

impl Octal for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for WmHintsFlags

source§

fn eq(&self, other: &WmHintsFlags) -> bool

This method tests for self and other values to be equal, and is used + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoIterator for WmHintsFlags

§

type Item = WmHintsFlags

The type of the elements being iterated over.
§

type IntoIter = Iter<WmHintsFlags>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl LowerHex for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Not for WmHintsFlags

source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

+
§

type Output = WmHintsFlags

The resulting type after applying the ! operator.
source§

impl Octal for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for WmHintsFlags

source§

fn eq(&self, other: &WmHintsFlags) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PublicFlags for WmHintsFlags

§

type Primitive = u32

The type of the underlying storage.
§

type Internal = InternalBitFlags

The type of the internal field on the generated flags type.
source§

impl Sub for WmHintsFlags

source§

fn sub(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

-
§

type Output = WmHintsFlags

The resulting type after applying the - operator.
source§

impl SubAssign for WmHintsFlags

source§

fn sub_assign(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

+
§

type Output = WmHintsFlags

The resulting type after applying the - operator.
source§

impl SubAssign for WmHintsFlags

source§

fn sub_assign(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

-
source§

impl UpperHex for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Eq for WmHintsFlags

source§

impl StructuralPartialEq for WmHintsFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for WmHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Eq for WmHintsFlags

source§

impl StructuralPartialEq for WmHintsFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/penrose/x/property/struct.WmNormalHintsFlags.html b/rustdoc/penrose/x/property/struct.WmNormalHintsFlags.html index 786dd2fc..94f3614a 100644 --- a/rustdoc/penrose/x/property/struct.WmNormalHintsFlags.html +++ b/rustdoc/penrose/x/property/struct.WmNormalHintsFlags.html @@ -43,13 +43,13 @@
source

pub const fn iter_names(&self) -> IterNames<WmNormalHintsFlags>

Yield a set of contained named flags values.

This method is like iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.

-

Trait Implementations§

source§

impl Binary for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl BitAnd for WmNormalHintsFlags

source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

-
§

type Output = WmNormalHintsFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for WmNormalHintsFlags

source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

+

Trait Implementations§

source§

impl Binary for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl BitAnd for WmNormalHintsFlags

source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

+
§

type Output = WmNormalHintsFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for WmNormalHintsFlags

source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

source§

impl BitOr for WmNormalHintsFlags

source§

fn bitor(self, other: WmNormalHintsFlags) -> Self

The bitwise or (|) of the bits in two flags values.

-
§

type Output = WmNormalHintsFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for WmNormalHintsFlags

source§

fn bitor_assign(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

+
§

type Output = WmNormalHintsFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for WmNormalHintsFlags

source§

fn bitor_assign(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

source§

impl BitXor for WmNormalHintsFlags

source§

fn bitxor(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

-
§

type Output = WmNormalHintsFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for WmNormalHintsFlags

source§

fn bitxor_assign(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

-
source§

impl Clone for WmNormalHintsFlags

source§

fn clone(&self) -> WmNormalHintsFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WmNormalHintsFlags

source§

fn default() -> WmNormalHintsFlags

Returns the “default value” for a type. Read more
source§

impl Extend<WmNormalHintsFlags> for WmNormalHintsFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

+
§

type Output = WmNormalHintsFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for WmNormalHintsFlags

source§

fn bitxor_assign(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

+
source§

impl Clone for WmNormalHintsFlags

source§

fn clone(&self) -> WmNormalHintsFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WmNormalHintsFlags

source§

fn default() -> WmNormalHintsFlags

Returns the “default value” for a type. Read more
source§

impl Extend<WmNormalHintsFlags> for WmNormalHintsFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one #72631)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one #72631)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl Flags for WmNormalHintsFlags

source§

const FLAGS: &'static [Flag<WmNormalHintsFlags>] = _

The set of defined flags.
§

type Bits = u32

The underlying bits type.
source§

fn bits(&self) -> u32

Get the underlying bits value. Read more
source§

fn from_bits_retain(bits: u32) -> WmNormalHintsFlags

Convert from a bits value exactly.
§

fn empty() -> Self

Get a flags value with all bits unset.
§

fn all() -> Self

Get a flags value with all known bits set.
§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
§

fn iter(&self) -> Iter<Self>

Yield a set of contained flags values. Read more
§

fn iter_names(&self) -> IterNames<Self>

Yield a set of contained named flags values. Read more
§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in a source flags value are also set in a target flags value.
§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in a source flags value are also set in a target flags value.
§

fn insert(&mut self, other: Self)
where @@ -59,8 +59,8 @@ Self: Sized,

Call [Flags::insert] when value is true or [Flags::remove] when value is false.
§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.
§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.
§

fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!). Read more
§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.
§

fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.
source§

impl FromIterator<WmNormalHintsFlags> for WmNormalHintsFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

The bitwise or (|) of the bits in each flags value.

source§

impl Hash for WmNormalHintsFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoIterator for WmNormalHintsFlags

§

type Item = WmNormalHintsFlags

The type of the elements being iterated over.
§

type IntoIter = Iter<WmNormalHintsFlags>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl LowerHex for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Not for WmNormalHintsFlags

source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

-
§

type Output = WmNormalHintsFlags

The resulting type after applying the ! operator.
source§

impl Octal for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for WmNormalHintsFlags

source§

fn eq(&self, other: &WmNormalHintsFlags) -> bool

This method tests for self and other values to be equal, and is used + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoIterator for WmNormalHintsFlags

§

type Item = WmNormalHintsFlags

The type of the elements being iterated over.
§

type IntoIter = Iter<WmNormalHintsFlags>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl LowerHex for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Not for WmNormalHintsFlags

source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

+
§

type Output = WmNormalHintsFlags

The resulting type after applying the ! operator.
source§

impl Octal for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for WmNormalHintsFlags

source§

fn eq(&self, other: &WmNormalHintsFlags) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PublicFlags for WmNormalHintsFlags

§

type Primitive = u32

The type of the underlying storage.
§

type Internal = InternalBitFlags

The type of the internal field on the generated flags type.
source§

impl Sub for WmNormalHintsFlags

source§

fn sub(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. @@ -68,7 +68,7 @@

§

type Output = WmNormalHintsFlags

The resulting type after applying the - operator.
source§

impl SubAssign for WmNormalHintsFlags

source§

fn sub_assign(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

-
source§

impl UpperHex for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Eq for WmNormalHintsFlags

source§

impl StructuralPartialEq for WmNormalHintsFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

source§

impl UpperHex for WmNormalHintsFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Eq for WmNormalHintsFlags

source§

impl StructuralPartialEq for WmNormalHintsFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/penrose/x/trait.XConnExt.html b/rustdoc/penrose/x/trait.XConnExt.html index e8d37646..81e04b2f 100644 --- a/rustdoc/penrose/x/trait.XConnExt.html +++ b/rustdoc/penrose/x/trait.XConnExt.html @@ -1,4 +1,4 @@ -XConnExt in penrose::x - Rust

Trait penrose::x::XConnExt

source ·
pub trait XConnExt: XConn + Sized {
+XConnExt in penrose::x - Rust

Trait penrose::x::XConnExt

source ·
pub trait XConnExt: XConn + Sized {
 
Show 22 methods // Provided methods fn kill_focused(&self, state: &mut State<Self>) -> Result<()> { ... } fn manage(&self, id: Xid, state: &mut State<Self>) -> Result<()> { ... } @@ -83,40 +83,40 @@ by f.

source

fn refresh(&self, state: &mut State<Self>) -> Result<()>

Refresh the current X server state based on a diff of the current state against the state when we last refreshed.

-
source

fn client_should_float( +

source

fn client_should_float( &self, client: Xid, floating_classes: &[String], ) -> Result<bool>

Check whether or not the given client should be assigned floating status or not.

-
source

fn set_client_border_color<C>(&self, id: Xid, color: C) -> Result<()>
where +

source

fn set_client_border_color<C>(&self, id: Xid, color: C) -> Result<()>
where C: Into<Color>,

Update the border color of the given client window.

-
source

fn set_initial_properties( +

source

fn set_initial_properties( &self, client: Xid, config: &Config<Self>, ) -> Result<()>

Set the initial window properties for a newly managed window.

-
source

fn position_client(&self, client: Xid, r: Rect) -> Result<()>

Update the geometry of a given client based on the given Rect.

-
source

fn position_clients(&self, border: u32, positions: &[(Xid, Rect)]) -> Result<()>

Restack and set the geometry for an ordered list of client windows and their +

source

fn position_client(&self, client: Xid, r: Rect) -> Result<()>

Update the geometry of a given client based on the given Rect.

+
source

fn position_clients(&self, border: u32, positions: &[(Xid, Rect)]) -> Result<()>

Restack and set the geometry for an ordered list of client windows and their associated positions. The provided positions are shrunk by the current border size in order to position the windows correctly within the frame given by the border.

See restack for details of stacking order is determined.

-
source

fn restack<'a, I>(&self, ids: I) -> Result<()>
where +

source

fn restack<'a, I>(&self, ids: I) -> Result<()>
where I: Iterator<Item = &'a Xid>,

Restack the given windows in, each one above the last.

-
source

fn set_active_client(&self, client: Xid, state: &mut State<Self>) -> Result<()>

Update the currently focused client and refresh the X state.

-
source

fn warp_pointer_to_window(&self, id: Xid) -> Result<()>

Warp the mouse cursor to the center of the given client window.

-
source

fn warp_pointer_to_screen( +

source

fn set_active_client(&self, client: Xid, state: &mut State<Self>) -> Result<()>

Update the currently focused client and refresh the X state.

+
source

fn warp_pointer_to_window(&self, id: Xid) -> Result<()>

Warp the mouse cursor to the center of the given client window.

+
source

fn warp_pointer_to_screen( &self, state: &mut State<Self>, screen_index: usize, ) -> Result<()>

Warp the mouse cursor to the center of the given screen.

-
source

fn all_props_for(&self, id: Xid) -> Result<HashMap<String, Prop>>

Fetch the value of all known properties for a given client window

-
source

fn window_title(&self, id: Xid) -> Result<String>

Request the title of a given client window following ICCCM/EWMH standards.

-
source

fn client_supports_protocol(&self, id: Xid, proto: &str) -> Result<bool>

Check to see if a given client window supports a particular protocol or not

-
source

fn window_pid(&self, id: Xid) -> Option<u32>

Request a window’s PID via the _NET_WM_PID property.

+
source

fn all_props_for(&self, id: Xid) -> Result<HashMap<String, Prop>>

Fetch the value of all known properties for a given client window

+
source

fn window_title(&self, id: Xid) -> Result<String>

Request the title of a given client window following ICCCM/EWMH standards.

+
source

fn client_supports_protocol(&self, id: Xid, proto: &str) -> Result<bool>

Check to see if a given client window supports a particular protocol or not

+
source

fn window_pid(&self, id: Xid) -> Option<u32>

Request a window’s PID via the _NET_WM_PID property.

NOTE: Not all programs set this property.

-
source

fn query(&self, query: &dyn Query<Self>, id: Xid) -> Result<bool>

Run the provided Query, returning the result.

-
source

fn query_or(&self, default: bool, query: &dyn Query<Self>, id: Xid) -> bool

Run the provided Query, returning the result or a default value if there +

source

fn query(&self, query: &dyn Query<Self>, id: Xid) -> Result<bool>

Run the provided Query, returning the result.

+
source

fn query_or(&self, default: bool, query: &dyn Query<Self>, id: Xid) -> bool

Run the provided Query, returning the result or a default value if there were any errors encountered when communicating with the X server.

-

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> XConnExt for T
where +

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> XConnExt for T
where T: XConn,

\ No newline at end of file diff --git a/rustdoc/penrose/x11rb/struct.Conn.html b/rustdoc/penrose/x11rb/struct.Conn.html index e82c11e4..b8e615b4 100644 --- a/rustdoc/penrose/x11rb/struct.Conn.html +++ b/rustdoc/penrose/x11rb/struct.Conn.html @@ -30,7 +30,7 @@ U: TryFrom<T>,
§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> XConnExt for T
where +[WithDispatch] wrapper. Read more

source§

impl<T> XConnExt for T
where T: XConn,

source§

fn kill_focused(&self, state: &mut State<Self>) -> Result<()>

Kill the focused client if there is one
source§

fn manage(&self, id: Xid, state: &mut State<Self>) -> Result<()>

Establish the window manager state for the given client window and refresh the current X state.
source§

fn unmanage(&self, client: Xid, state: &mut State<Self>) -> Result<()>

Remove the window manager state for the given client window and refresh the current X state.
source§

fn reveal( @@ -47,23 +47,23 @@ ) -> Result<()>

Hide a client by unmapping it and setting its WmState to Iconic
source§

fn modify_and_refresh<F>(&self, state: &mut State<Self>, f: F) -> Result<()>
where F: FnMut(&mut ClientSet),

Apply a pure function that modifies a ClientSet and then handle refreshing the WindowManager state and associated X11 calls. Read more
source§

fn refresh(&self, state: &mut State<Self>) -> Result<()>

Refresh the current X server state based on a diff of the current state against the state -when we last refreshed.
source§

fn client_should_float( +when we last refreshed.

source§

fn client_should_float( &self, client: Xid, floating_classes: &[String], -) -> Result<bool>

Check whether or not the given client should be assigned floating status or not.
source§

fn set_client_border_color<C>(&self, id: Xid, color: C) -> Result<()>
where - C: Into<Color>,

Update the border color of the given client window.
source§

fn set_initial_properties( +) -> Result<bool>

Check whether or not the given client should be assigned floating status or not.
source§

fn set_client_border_color<C>(&self, id: Xid, color: C) -> Result<()>
where + C: Into<Color>,

Update the border color of the given client window.
source§

fn set_initial_properties( &self, client: Xid, config: &Config<Self>, -) -> Result<()>

Set the initial window properties for a newly managed window.
source§

fn position_client(&self, client: Xid, r: Rect) -> Result<()>

Update the geometry of a given client based on the given Rect.
source§

fn position_clients(&self, border: u32, positions: &[(Xid, Rect)]) -> Result<()>

Restack and set the geometry for an ordered list of client windows and their +) -> Result<()>
Set the initial window properties for a newly managed window.
source§

fn position_client(&self, client: Xid, r: Rect) -> Result<()>

Update the geometry of a given client based on the given Rect.
source§

fn position_clients(&self, border: u32, positions: &[(Xid, Rect)]) -> Result<()>

Restack and set the geometry for an ordered list of client windows and their associated positions. The provided positions are shrunk by the current border size in order to position the windows correctly within the frame given by the -border. Read more
source§

fn restack<'a, I>(&self, ids: I) -> Result<()>
where - I: Iterator<Item = &'a Xid>,

Restack the given windows in, each one above the last.
source§

fn set_active_client(&self, client: Xid, state: &mut State<Self>) -> Result<()>

Update the currently focused client and refresh the X state.
source§

fn warp_pointer_to_window(&self, id: Xid) -> Result<()>

Warp the mouse cursor to the center of the given client window.
source§

fn warp_pointer_to_screen( +border. Read more

source§

fn restack<'a, I>(&self, ids: I) -> Result<()>
where + I: Iterator<Item = &'a Xid>,

Restack the given windows in, each one above the last.
source§

fn set_active_client(&self, client: Xid, state: &mut State<Self>) -> Result<()>

Update the currently focused client and refresh the X state.
source§

fn warp_pointer_to_window(&self, id: Xid) -> Result<()>

Warp the mouse cursor to the center of the given client window.
source§

fn warp_pointer_to_screen( &self, state: &mut State<Self>, screen_index: usize, -) -> Result<()>

Warp the mouse cursor to the center of the given screen.
source§

fn all_props_for(&self, id: Xid) -> Result<HashMap<String, Prop>>

Fetch the value of all known properties for a given client window
source§

fn window_title(&self, id: Xid) -> Result<String>

Request the title of a given client window following ICCCM/EWMH standards.
source§

fn client_supports_protocol(&self, id: Xid, proto: &str) -> Result<bool>

Check to see if a given client window supports a particular protocol or not
source§

fn window_pid(&self, id: Xid) -> Option<u32>

Request a window’s PID via the _NET_WM_PID property. Read more
source§

fn query(&self, query: &dyn Query<Self>, id: Xid) -> Result<bool>

Run the provided Query, returning the result.
source§

fn query_or(&self, default: bool, query: &dyn Query<Self>, id: Xid) -> bool

Run the provided Query, returning the result or a default value if there +) -> Result<()>
Warp the mouse cursor to the center of the given screen.
source§

fn all_props_for(&self, id: Xid) -> Result<HashMap<String, Prop>>

Fetch the value of all known properties for a given client window
source§

fn window_title(&self, id: Xid) -> Result<String>

Request the title of a given client window following ICCCM/EWMH standards.
source§

fn client_supports_protocol(&self, id: Xid, proto: &str) -> Result<bool>

Check to see if a given client window supports a particular protocol or not
source§

fn window_pid(&self, id: Xid) -> Option<u32>

Request a window’s PID via the _NET_WM_PID property. Read more
source§

fn query(&self, query: &dyn Query<Self>, id: Xid) -> Result<bool>

Run the provided Query, returning the result.
source§

fn query_or(&self, default: bool, query: &dyn Query<Self>, id: Xid) -> bool

Run the provided Query, returning the result or a default value if there were any errors encountered when communicating with the X server.
§

impl<T> Any for T
where T: Any,

\ No newline at end of file diff --git a/rustdoc/penrose_ui/enum.Error.html b/rustdoc/penrose_ui/enum.Error.html index 37c98719..c3326b9d 100644 --- a/rustdoc/penrose_ui/enum.Error.html +++ b/rustdoc/penrose_ui/enum.Error.html @@ -27,7 +27,7 @@
§

UnintialisedSurface

An attempt was made to work with a surface for a window that was not initialised by the Draw instance being used.

Fields

§id: Xid

The window id requested

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<NulError> for Error

source§

fn from(source: NulError) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(source: ParseIntError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<NulError> for Error

source§

fn from(source: NulError) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(source: ParseIntError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/search-index.js b/rustdoc/search-index.js index 31a62213..ed09fd35 100644 --- a/rustdoc/search-index.js +++ b/rustdoc/search-index.js @@ -1,7 +1,7 @@ var searchIndex = new Map(JSON.parse('[\ -["penrose",{"t":"PFPPGPPPPPPPPPPPPIPPPPPPPPPPFNNNNNNNNCNNNNNCQNNNNCNNNNNNNNNNNNNNNNNNNNNQNNNQQNNCNNNNQNQNNNNNNNNNNNNNNNCCCOOOOOOOOOOOOOCCCHHCHHHHHHFFNNNNNNNNNNNNHHNNNNNNNNNNHHHHNNHNNNNNNFNNONNNNNONONONNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNCNNNNNNNNNNNNNNFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIIFFFFNNCONNNNNNONNNNNONNOONNONNNOONNNCNNNCOONNOONNNOOONNNNNNNNNPPPPPPIFIIKGPPPPGFFIGFFKGFPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNOMHNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNHONNOOONNNNNNMMHNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFKKKKNNNNNNNNNNNNMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKIKFNNNMNNNNNNMNNMNNNMNNNNNMNNNNNNNNNNNNMNNNNNCCCCPGPPNNNNNHHHNNHNNHNHHNHNNNEEEEEECCCCCCFNNNNNNNNNNNNNSSHHHHFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSFFHNNNNNNNNHNNNNNNHNNNNNNNNFNNNNNNNNNNNNNNFNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGNNNNNCCNNNNNHHNNNNNHFFNNNNNNNNNNNNNNOOONNNNOOOHNNNNNNNNFFGPGPPPPONNNNNNNNNNNNNNNNNOONNONNNNNNNNONNNNOONONOOONNNNNNNNNNNNNNNNNPPPPPPPGGPFFFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOHHHHHHEPPPGGPPPPPEEPPPPPGEKKENCMNNNNNNMNNNNNNNNMMNNNCMMNNNMNNNMMMMNNNNMNNNMNMNMNMNNCCNNNNNMMMNMNMNMMNNNNNNNNNNNNNMMNNNNFINNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSGPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFPGGFPPPPPPFPPPPPPPPFFPPPFPPPPPPPPPPPPPGONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNOOONOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOPPPPTTTTTPPPGPTTTTTTTTGTTPTTPPPTPFGPFPFFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFKFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ClientIsNotVisible","Color","Custom","Err","Error","InsufficientWorkspaces","InvalidClientMessage","InvalidHexColor","InvalidHints","InvalidPropertyData","InvalidUtf8","Io","NoScreens","NonUniqueTags","Ok","ParseInt","Randr","Result","UnknownClient","UnknownKeyName","UnknownModifier","UnknownMouseButton","UnknownStateExtension","X11rbConnect","X11rbConnection","X11rbReplyError","X11rbReplyOrIdError","X11rbX11Error","Xid","argb_u32","as_rgb_hex_string","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin","clone","clone","clone_into","clone_into","cmp","core","custom_error","default","deref","eq","eq","extensions","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","impl_message","into","into","into","manage_hooks","map","new_from_hex","partial_cmp","pure","rgb","rgb_u32","rgba","rgba_u32","simple_transformer","source","stack","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","util","x","x11rb","button","format","hex_code","id","n_screens","n_ws","name","name","prop","reason","tags","ty","type_id","actions","hooks","layout","broadcast_layout_message","exit","floating","key_handler","log_current_state","modify_with","remove_and_unmap_focused_client","send_layout_message","spawn","MouseDragHandler","MouseResizeHandler","borrow","borrow","borrow_mut","borrow_mut","boxed_default","boxed_default","clone","clone","clone_into","clone_into","default","default","float_all","float_focused","fmt","fmt","from","from","into","into","on_motion","on_motion","on_mouse_event","on_mouse_event","reposition","resize","sink_all","sink_focused","to_owned","to_owned","toggle_floating_focused","try_from","try_from","try_into","try_into","type_id","type_id","SpacingHook","borrow","borrow_mut","bottom_px","clone","clone_into","default","fmt","from","inner_px","into","outer_px","to_owned","top_px","transform_initial","transform_positions","try_from","try_into","type_id","CenteredMain","Grid","MainAndStack","Monocle","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom","bottom_unboxed","boxed","boxed","boxed_clone","boxed_clone","boxed_clone","boxed_clone","boxed_default","boxed_default","boxed_default_rotated","boxed_default_rotated","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","default","fmt","fmt","fmt","fmt","from","from","from","from","handle_message","handle_message","handle_message","handle_message","horizontal","horizontal_unboxed","into","into","into","into","layout","layout","layout","layout","messages","name","name","name","name","rotate","rotate","side","side_mirrored","side_unboxed","to_owned","to_owned","to_owned","to_owned","top","transformers","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vertical","vertical_unboxed","ExpandMain","Hide","IncMain","Mirror","Rotate","ShrinkMain","UnwrapTransformer","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Gaps","ReflectHorizontal","ReflectVertical","ReserveTop","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","boxed_clone","boxed_clone","boxed_clone","boxed_clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","fmt","fmt","fmt","fmt","from","from","from","from","handle_message","handle_message","handle_message","handle_message","inner_mut","inner_mut","inner_mut","inner_mut","inner_px","into","into","into","into","layout","layout","layout","layout","layout","layout","layout_empty","layout_empty","layout_empty","layout_empty","layout_workspace","layout_workspace","layout_workspace","layout_workspace","name","name","name","name","outer_px","px","to_owned","to_owned","to_owned","to_owned","transform_initial","transform_initial","transform_initial","transform_initial","transform_initial","transform_initial","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transformed_name","transformed_name","transformed_name","transformed_name","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap","wrap","wrap","wrap","ClientSet","ClientSpace","Config","State","WindowManager","Xid","add_extension","add_extension","bindings","border_width","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client_set","compose_or_set_event_hook","compose_or_set_layout_hook","compose_or_set_manage_hook","compose_or_set_refresh_hook","compose_or_set_startup_hook","config","current_event","default","default_layouts","event_hook","extension","extension_or_default","floating_classes","fmt","fmt","fmt","focus_follow_mouse","focused_border","from","from","from","hooks","into","into","into","layout","layout_hook","manage_hook","mapped_clients","new","normal_border","refresh_hook","remove_extension","root","run","startup_hook","state","tags","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Alt","Backspace","Ctrl","Delete","Down","Escape","KeyBindings","KeyCode","KeyCodeMask","KeyCodeValue","KeyEventHandler","KeyPress","Left","Left","Meta","Middle","ModifierKey","ModifierKeyIter","MotionNotifyEvent","MouseBindings","MouseButton","MouseEvent","MouseEventData","MouseEventHandler","MouseEventKind","MouseState","PageDown","PageUp","Press","Release","Return","Right","Right","ScrollDown","ScrollUp","Shift","Tab","Up","Utf8","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","button","button","call","click_handler","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","code","data","data","default","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_detail_and_state","hash","hash","hash","hash","hash","hash","hash","hash","id","ignoring_modifier","into","into","into","into","into","into","into","into","into","into","into_iter","iter","keycodes_from_xmodmap","kind","len","mask","mask","modifiers","modifiers","new","new","new","next","next_back","nth","on_motion","on_mouse_event","parse_keybindings_with_xmodmap","partial_cmp","rpt","size_hint","state","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","wpt","ComposedEventHook","ComposedLayoutHook","ComposedManageHook","ComposedStateHook","EventHook","LayoutHook","ManageHook","StateHook","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","boxed","boxed","boxed","boxed","call","call","call","call","call","call","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","then","then","then","then","then_boxed","then_boxed","then_boxed","then_boxed","transform_initial","transform_initial","transform_initial_for_screen","transform_initial_for_screen","transform_positions","transform_positions","transform_positions_for_screen","transform_positions_for_screen","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","IntoMessage","Layout","LayoutStack","LayoutTransformer","Message","borrow","borrow_mut","boxed","boxed_clone","boxed_clone","broadcast_message","default","downcast_ref","fmt","from","handle_message","handle_message","handle_message","inner_mut","into","into_message","into_message","layout","layout","layout_empty","layout_empty","layout_workspace","layout_workspace","name","name","passthrough_message","passthrough_message","run_and_replace","run_transform","run_transform","swap_inner","swap_inner","transform_initial","transform_initial","transform_positions","transform_positions","transformed_name","try_from","try_into","type_id","unwrap","unwrap","actions","hooks","layout","util","Add","FullScreenAction","Remove","Toggle","borrow","borrow_mut","clone","clone_into","cmp","create_or_switch_to_workspace","dmenu_focus_client","dmenu_focus_tag","eq","fmt","focus_or_spawn","from","into","launch_dmenu","partial_cmp","set_fullscreen_state","switch_to_workspace","to_owned","toggle_fullscreen","try_from","try_into","type_id","NamedScratchPad","SpawnOnStartup","ToggleNamedScratchPad","WindowSwallowing","add_ewmh_hooks","add_named_scratchpads","default_workspaces","ewmh","manage","named_scratchpads","startup","window_swallowing","DefaultWorkspace","borrow","borrow_mut","boxed","call","clone","clone_into","fmt","from","into","to_owned","try_from","try_into","type_id","EWMH_SUPPORTED_ATOMS","WM_NAME","add_ewmh_hooks","event_hook","refresh_hook","startup_hook","DefaultTiled","FloatingCentered","FloatingFixed","FloatingRelative","SetWorkspace","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call","call","call","call","call","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","into","into","into","into","into","new","new","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","NSP_TAG","NamedScratchPad","ToggleNamedScratchPad","add_named_scratchpads","borrow","borrow","borrow_mut","borrow_mut","call","clone","clone_into","eq","event_hook","fmt","fmt","from","from","into","into","manage_hook","new","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","SpawnOnStartup","borrow","borrow_mut","boxed","call","clone","clone_into","eq","fmt","from","into","to_owned","try_from","try_into","type_id","WindowSwallowing","borrow","borrow_mut","boxed","call","fmt","from","into","try_from","try_into","type_id","Conditional","Fibonacci","Tatami","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","boxed","boxed","boxed","boxed_clone","boxed_clone","boxed_clone","boxed_default","boxed_default","clone","clone","clone_into","clone_into","default","default","fmt","fmt","fmt","from","from","from","handle_message","handle_message","handle_message","into","into","into","layout","layout","layout","name","name","name","new","new","new","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Critical","Low","Normal","NotifyLevel","borrow","borrow_mut","clone","clone_into","cmp","debug","dmenu","eq","fmt","from","hash","into","notify_send","notify_send_custom","partial_cmp","to_owned","try_from","try_into","type_id","update_monitors_via_xrandr","CurrentStateConfig","NotfyState","borrow","borrow","borrow_mut","borrow_mut","call","clone","clone","clone_into","clone_into","default","default","eq","fmt","fmt","focused_client","focused_screen","focused_tag","from","from","into","into","line_per_stat","n_clients","n_mapped_clients","summarise_state","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","DMenu","DMenuConfig","DMenuKind","Line","MenuMatch","NoMatch","Rust","Suckless","UserInput","bg_color","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_menu","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","custom_font","custom_prompt","default","eq","fg_color","fmt","fmt","fmt","fmt","from","from","from","from","ignore_case","into","into","into","into","kind","n_lines","new","password_input","run","selected_color","show_line_numbers","show_on_bottom","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","with_prompt","Above","After","Before","Below","Focus","Head","Left","Position","RelativePosition","Right","Screen","Stack","StackSet","Tail","Workspace","add_invisible_workspace","add_workspace","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast_message","broadcast_message","clients","clients","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contains","contains","contains","contains_tag","current_client","current_screen","current_stack","current_tag","current_workspace","current_workspace_mut","default","default","default","default","default","drag_workspace_backward","drag_workspace_forward","eq","eq","eq","extract","filter","flatten","float","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focus","focus_client","focus_down","focus_down","focus_element","focus_element_by","focus_head","focus_head","focus_next_workspace","focus_previous_workspace","focus_screen","focus_tag","focus_up","focus_up","focused","from","from","from","from","from","from","from_filtered","geometry","geometry","handle_message","handle_message","has_floating_windows","head","hidden_workspace_clients","hidden_workspaces","hidden_workspaces_mut","id","index","insert","insert","insert_at","insert_at","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_empty","is_empty","is_floating","iter","iter_mut","kill_focused","last","layout_name","len","map","modify","modify_occupied","move_client_to_current_tag","move_client_to_tag","move_focused_to_screen","move_focused_to_tag","new","new","next_layout","next_layout","next_screen","non_hidden_workspaces","on_screen_workspace_clients","on_screen_workspaces","ordered_tags","ordered_workspaces","previous_layout","previous_layout","previous_screen","pull_tag_to_screen","remove","remove_client","remove_focused","remove_focused","reverse","rotate_down","rotate_down","rotate_focus_to_head","rotate_focus_to_head","rotate_up","rotate_up","run_and_replace","screen_for_client","screens","screens_mut","set_available_layouts","set_layout_by_name","set_layout_by_name","sink","swap_down","swap_down","swap_focus_and_head","swap_focus_and_head","swap_up","swap_up","tag","tag_for_client","tag_for_screen","tag_for_workspace_id","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","toggle_floating_state","toggle_tag","try_from","try_from","try_from","try_from","try_from","try_from","try_from_iter","try_into","try_into","try_into","try_into","try_into","try_into","try_new","type_id","type_id","type_id","type_id","type_id","type_id","unravel","with","workspace","workspace","workspace_mut","workspaces","workspaces_mut","Point","Rect","RelativeRect","RelativeTo","applied_to","apply_as_rect","as_columns","as_rows","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","centered_in","clone","clone","clone","clone_into","clone_into","clone_into","contains","contains_point","corners","default","default","default","eq","eq","eq","fmt","fmt","fmt","from","from","from","from","from","from","from","from","fullscreen","h","hash","hash","into","into","into","is_larger_than","midpoint","new","new","new","relative_to","relative_to","relative_to","reposition","resize","scale_h","scale_w","shrink_in","split_at_height","split_at_height_perc","split_at_mid_height","split_at_mid_width","split_at_width","split_at_width_perc","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","w","x","x","y","y","notify","print_layout_result","spawn","spawn_for_output","spawn_for_output_with_args","spawn_with_args","Atom","BorderColor","BorderPx","CheckWin","ClientAttr","ClientConfig","ClientEventMask","ClientUnmapMask","InputOnly","InputOutput","Position","Prop","Query","RootEventMask","StackAbove","StackBelow","StackBottom","StackTop","WinType","WindowAttributes","XConn","XConnExt","XEvent","all_props_for","atom","atom_name","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client_geometry","client_should_float","client_supports_protocol","clone","clone","clone","clone_into","clone_into","clone_into","cursor_position","delete_prop","eq","eq","eq","event","existing_clients","flush","fmt","fmt","fmt","focus","from","from","from","get_prop","get_window_attributes","get_wm_state","grab","hash","hash","hash","hide","intern_atom","into","into","into","kill","kill_focused","list_props","manage","map","modify_and_refresh","next_event","position_client","position_clients","property","query","query","query_or","refresh","restack","reveal","root","screen_details","send_client_message","set_active_client","set_client_attributes","set_client_border_color","set_client_config","set_initial_properties","set_prop","set_wm_state","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unmanage","unmap","warp_pointer","warp_pointer_to_screen","warp_pointer_to_window","window_pid","window_title","Conn","RustConn","atom_name","borrow","borrow_mut","client_geometry","connection","conversions","create_window","cursor_position","delete_prop","destroy_window","existing_clients","flush","fmt","focus","from","get_prop","get_window_attributes","get_wm_state","grab","intern_atom","into","kill","list_props","map","new","next_event","root","screen_details","send_client_message","set_client_attributes","set_client_config","set_prop","set_wm_state","try_from","try_into","type_id","unmap","warp_pointer","AUTO_FLOAT_WINDOW_TYPES","Atom","Atom","AtomIter","Cardinal","Manager","NetActiveWindow","NetClientList","NetClientListStacking","NetCurrentDesktop","NetDesktopNames","NetDesktopViewport","NetNumberOfDesktops","NetSupported","NetSupportingWmCheck","NetSystemTrayOpcode","NetSystemTrayOrientation","NetSystemTrayOrientationHorz","NetSystemTrayS0","NetWindowTypeCombo","NetWindowTypeDesktop","NetWindowTypeDialog","NetWindowTypeDnd","NetWindowTypeDock","NetWindowTypeDropdownMenu","NetWindowTypeMenu","NetWindowTypeNormal","NetWindowTypeNotification","NetWindowTypePopupMenu","NetWindowTypeSplash","NetWindowTypeToolbar","NetWindowTypeUtility","NetWmDesktop","NetWmName","NetWmState","NetWmStateDemandsAttention","NetWmStateFullscreen","NetWmStateHidden","NetWmStrut","NetWmWindowType","UTF8String","Window","WmClass","WmDeleteWindow","WmHints","WmName","WmNormalHints","WmProtocols","WmState","WmTakeFocus","WmTransientFor","XEmbed","XEmbedInfo","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","fmt","fmt","from","from","from_str","hash","into","into","into_iter","iter","len","next","next_back","nth","size_hint","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","type_id","type_id","ClientEventMask","ClientMessage","ClientMessage","ClientMessageData","ClientMessageKind","ConfigureEvent","ConfigureNotify","ConfigureRequest","DeleteWindow","Destroy","Enter","Expose","ExposeEvent","FocusIn","KeyPress","Leave","MapRequest","MappingNotify","MotionNotify","MouseEvent","NoEventMask","PointerChange","PropertyEvent","PropertyNotify","RandrNotify","ResizeRequest","ResizeRequestEvent","ScreenChange","StructureNotify","SubstructureNotify","TakeFocus","TakeSystrayOwnership","U16","U32","U8","UnmapNotify","XEmbedFocusIn","XEmbedModalityOn","XEmbedNotify","XEmbedWindowActivate","XEvent","abs","as_message","as_u16","as_u32","as_u8","as_usize","atom","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","data","dtype","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","height","id","id","id","id","id","id","into","into","into","into","into","into","into","into","into","into","is_root","is_root","mask","new","r","r","relative","same_screen","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","width","Atom","Bytes","Cardinal","CopyFromParent","ICON_MASK_HINT","ICON_PIXMAP_HINT","ICON_POSITION_HINT","ICON_WINDOW_HINT","INPUT_HINT","Iconic","InputOnly","InputOutput","MapState","Normal","P_ASPECT","P_BASE_SIZE","P_MAX_SIZE","P_MIN_SIZE","P_POSITION","P_RESIZE_INC","P_SIZE","P_WIN_GRAVITY","Prop","STATE_HINT","URGENCY_HINT","UTF8String","U_POSITION","U_SIZE","UnViewable","Unmapped","Viewable","WINDOW_GROUP_HINT","Window","WindowAttributes","WindowClass","Withdrawn","WmHints","WmHints","WmHintsFlags","WmNormalHints","WmNormalHints","WmNormalHintsFlags","WmState","all","all","apply_to","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bits","bits","bits","bits","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","complement","complement","contains","contains","default","default","difference","difference","empty","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_name","from_name","hash","hash","hash","hash","hash","hash","hash","hash","hash","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_all","is_all","is_empty","is_empty","iter","iter","iter_names","iter_names","new","new","new","not","not","remove","remove","set","set","sub","sub","sub_assign","sub_assign","symmetric_difference","symmetric_difference","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_bytes","try_from_bytes","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","AndQuery","AppName","ClassName","NotQuery","OrQuery","Query","StringProperty","Title","and","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","not","or","run","run","run","run","run","run","run","run","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"penrose"],[105,"penrose::Error"],[118,"penrose::builtin"],[121,"penrose::builtin::actions"],[130,"penrose::builtin::actions::floating"],[169,"penrose::builtin::hooks"],[188,"penrose::builtin::layout"],[275,"penrose::builtin::layout::messages"],[366,"penrose::builtin::layout::transformers"],[468,"penrose::core"],[532,"penrose::core::bindings"],[736,"penrose::core::hooks"],[802,"penrose::core::layout"],[849,"penrose::extensions"],[853,"penrose::extensions::actions"],[879,"penrose::extensions::hooks"],[891,"penrose::extensions::hooks::default_workspaces"],[905,"penrose::extensions::hooks::ewmh"],[911,"penrose::extensions::hooks::manage"],[963,"penrose::extensions::hooks::named_scratchpads"],[991,"penrose::extensions::hooks::startup"],[1006,"penrose::extensions::hooks::window_swallowing"],[1017,"penrose::extensions::layout"],[1072,"penrose::extensions::util"],[1096,"penrose::extensions::util::debug"],[1131,"penrose::extensions::util::dmenu"],[1201,"penrose::pure"],[1422,"penrose::pure::geometry"],[1506,"penrose::util"],[1512,"penrose::x"],[1625,"penrose::x11rb"],[1665,"penrose::x::atom"],[1752,"penrose::x::event"],[1960,"penrose::x::property"],[2208,"penrose::x::query"],[2299,"alloc::string"],[2300,"core::cmp"],[2301,"core::fmt"],[2302,"core::num::error"],[2303,"x11rb::errors"],[2304,"std::io::error"],[2305,"x11rb_protocol::errors"],[2306,"core::hash"],[2307,"core::option"],[2308,"core::error"],[2309,"core::result"],[2310,"core::any"],[2311,"alloc::boxed"],[2312,"penrose::core::layout::messages"],[2313,"core::ops::function"],[2314,"core::clone"],[2315,"alloc::vec"],[2316,"penrose::pure::stack"],[2317,"anymap::any"],[2318,"core::cell"],[2319,"alloc::sync"],[2320,"core::default"],[2321,"std::collections::hash::set"],[2322,"std::collections::hash::map"],[2323,"core::convert"],[2324,"penrose_keysyms"],[2325,"penrose::core::layout::transformers"],[2326,"alloc::borrow"],[2327,"penrose::extensions::layout::combinators"],[2328,"penrose::pure::stack_set"],[2329,"penrose::pure::workspace"],[2330,"core::iter::traits::iterator"],[2331,"penrose::pure::screen"],[2332,"core::iter::traits::collect"],[2333,"x11rb::connection"],[2334,"x11rb::rust_connection"],[2335,"bitflags::iter"],[2336,"penrose::extensions::actions::dynamic_select"]],"i":[12,0,12,27,0,12,12,12,12,12,12,12,12,12,27,12,12,0,12,12,12,12,12,12,12,12,12,12,0,1,1,6,12,1,6,12,1,0,6,1,6,1,6,0,0,6,6,6,1,0,6,6,12,12,1,6,6,12,12,12,12,12,12,12,12,1,1,1,1,6,1,0,6,12,1,0,0,1,6,0,1,1,1,1,0,12,0,6,1,6,12,6,12,1,1,1,6,12,1,6,12,1,0,0,0,184,185,186,187,188,188,189,190,187,191,192,187,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,41,40,41,40,41,40,41,40,41,40,41,0,0,40,41,40,41,40,41,40,41,40,41,0,0,0,0,40,41,0,40,41,40,41,40,41,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,50,51,52,53,50,51,52,53,50,50,52,53,50,51,52,53,50,51,50,51,50,51,52,53,50,51,52,53,50,51,53,50,51,52,53,50,51,52,53,50,51,52,53,51,51,50,51,52,53,50,51,52,53,0,50,51,52,53,50,51,50,50,50,50,51,52,53,50,0,50,51,52,53,50,51,52,53,50,51,52,53,51,51,0,0,0,0,0,0,0,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,0,0,0,0,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,65,63,64,65,66,63,64,65,66,65,66,63,64,65,66,63,64,65,66,63,64,65,66,65,66,63,64,65,66,63,64,65,65,66,66,63,63,64,64,65,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,0,0,0,0,0,0,35,68,0,69,69,35,68,69,35,68,35,69,69,69,69,69,35,35,69,69,69,35,35,69,69,35,68,69,69,69,35,68,0,69,35,68,0,69,69,35,68,69,69,35,35,68,69,68,69,69,35,68,69,35,68,69,35,68,87,84,87,84,84,84,0,0,0,0,0,0,84,86,87,86,0,0,0,0,0,0,0,0,0,0,84,84,89,89,84,84,86,86,86,87,84,84,84,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,82,82,29,0,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,87,85,43,42,86,84,85,86,87,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,82,85,86,87,82,89,90,43,42,90,85,84,85,86,87,88,82,89,90,43,42,88,87,0,43,88,82,85,82,42,82,43,42,88,88,88,39,39,0,87,90,88,43,84,85,86,87,88,82,89,90,43,42,84,84,85,86,86,87,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,90,0,0,0,0,0,0,0,0,98,99,100,101,98,99,100,101,70,72,73,71,70,72,73,98,99,100,98,99,100,101,98,99,100,101,98,99,100,101,70,72,73,71,70,72,73,71,71,101,71,101,71,101,71,101,98,99,100,101,98,99,100,101,98,99,100,101,0,0,0,0,0,54,54,49,49,102,102,102,54,54,54,49,102,102,103,54,31,31,49,102,49,102,49,102,49,102,103,103,102,103,103,103,103,103,103,103,103,103,54,54,54,103,103,0,0,0,0,105,0,105,105,105,105,105,105,105,0,0,0,105,105,0,105,105,0,105,0,0,105,0,105,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,110,110,110,110,110,110,110,110,110,110,110,110,110,0,0,0,0,0,0,0,0,0,0,0,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,113,114,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,0,0,0,0,116,117,116,117,117,117,117,117,0,116,117,116,117,116,117,0,116,117,116,117,116,117,116,117,0,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,121,121,121,121,121,121,121,121,121,121,0,0,0,122,123,124,122,123,124,122,123,124,122,123,124,123,124,123,124,123,124,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,123,124,122,123,124,122,123,124,122,123,124,125,125,125,0,125,125,125,125,125,0,0,125,125,125,125,125,0,0,125,125,125,125,125,0,0,0,127,128,127,128,127,127,128,127,128,127,128,128,127,128,128,128,128,127,128,127,128,128,128,128,0,127,128,127,128,127,128,127,128,0,0,0,130,0,130,131,131,130,107,130,131,107,129,130,131,107,129,129,130,131,107,129,130,131,107,129,107,107,107,131,107,130,131,107,129,130,131,107,129,107,130,131,107,129,107,107,129,107,129,107,107,107,130,131,107,129,130,131,107,129,130,131,107,129,130,131,107,129,107,126,140,140,126,140,140,126,0,0,126,0,0,0,140,0,132,132,139,140,55,132,136,126,139,140,55,132,136,126,55,136,132,136,139,140,55,132,136,126,139,140,55,132,136,126,55,132,136,132,132,132,132,132,132,132,139,140,55,132,136,132,132,140,55,126,55,55,55,132,139,139,140,55,55,132,136,136,126,136,132,55,132,55,55,55,132,132,132,132,132,55,132,55,139,140,55,132,136,126,55,0,139,55,136,132,55,132,132,132,136,139,55,132,55,132,139,140,55,132,136,126,55,55,55,55,136,132,55,55,132,55,136,55,55,132,132,132,132,132,132,55,136,132,136,132,132,132,132,132,132,132,136,132,132,55,132,55,132,55,55,132,55,132,55,132,55,132,132,132,136,132,136,132,55,132,55,132,55,132,136,132,132,132,139,140,55,132,136,126,139,55,136,132,132,139,140,55,132,136,126,55,139,140,55,132,136,126,132,139,140,55,132,136,126,55,132,132,139,132,132,132,0,0,0,0,143,143,46,46,144,143,46,144,143,46,46,144,143,46,144,143,46,46,46,46,144,143,46,144,143,46,144,143,46,144,144,144,144,144,143,46,46,143,46,144,46,144,143,46,46,46,144,143,46,145,143,46,46,46,46,46,46,46,46,46,46,46,46,144,143,46,144,143,46,144,143,46,144,143,46,46,144,46,144,46,0,0,0,0,0,0,0,151,150,149,0,0,151,151,149,149,150,0,0,151,150,150,150,150,0,0,0,0,0,147,0,34,149,150,151,149,150,151,34,147,147,149,150,151,149,150,151,34,34,149,150,151,0,34,34,149,150,151,34,149,150,151,34,34,34,34,149,150,151,147,34,149,150,151,34,147,34,147,34,147,34,147,147,0,0,147,147,147,147,147,34,34,34,147,34,147,34,147,34,34,149,150,151,149,150,151,149,150,151,149,150,151,147,34,34,147,147,147,147,0,0,155,155,155,155,155,0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,0,0,158,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,159,158,159,158,159,158,159,158,158,159,158,159,158,158,158,159,159,158,159,159,159,159,159,158,159,158,158,159,158,159,158,159,0,0,74,0,0,0,74,74,160,74,74,74,0,74,74,74,74,74,74,74,162,0,0,74,74,74,0,74,162,162,160,160,161,161,161,74,160,160,160,160,0,165,160,161,161,161,161,166,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,164,154,154,74,160,162,161,154,163,164,165,166,167,74,74,160,162,161,154,163,164,165,166,167,74,160,162,161,161,161,161,161,161,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,167,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,163,166,154,154,163,164,165,165,74,160,162,161,154,163,164,165,166,167,74,74,160,162,161,161,161,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,167,148,148,148,173,169,169,169,169,169,153,173,173,0,153,170,170,170,170,170,170,170,170,0,169,169,148,170,170,172,172,172,169,148,0,0,153,0,148,0,0,148,0,0,169,170,171,169,170,169,170,169,170,169,170,169,169,170,170,169,170,169,170,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,148,169,169,169,169,169,170,170,170,170,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,169,169,170,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,169,170,169,170,174,171,152,169,170,169,170,169,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,148,169,170,153,172,173,174,171,152,174,171,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,0,0,0,0,0,0,0,0,119,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,178,179,180,181,178,179,180,181,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,177,182,183,119,119,119,178,179,180,181,177,182,183,178,179,180,181,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,177,182,183],"f":"`````````````````````````````{{{d{b}}}f}{{{d{b}}}h}{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00`{{{d{l}}}l}{{{d{b}}}b}{{{d{c}}{d{je}}}n{}{}}0{{{d{l}}{d{l}}}A`}``{{}l}{{{d{l}}}{{d{c}}}{}}{{{d{l}}{d{l}}}Ab}{{{d{b}}{d{b}}}Ab}`{{{d{l}}{d{jAd}}}Af}0{{{d{Ah}}{d{jAd}}}Af}0{{{d{b}}{d{jAd}}}Af}{fl}{cc{}}{AjAh}{AlAh}{AnAh}3{B`Ah}{BbAh}{BdAh}{BfAh}{fb}{{{Bj{BhBhBhBh}}}b}{{{Bj{BhBhBh}}}b}:{{{d{l}}{d{jc}}}nBl}{{{d{b}}{d{jc}}}nBl}`{ce{}{}}00``5{{{d{l}}{d{l}}}{{Bn{A`}}}}`{{{d{b}}}{{Bj{BhBhBh}}}}{{{d{b}}}f}{{{d{b}}}{{Bj{BhBhBhBh}}}}1`{{{d{Ah}}}{{Bn{{d{C`}}}}}}`{{{d{c}}}e{}{}}0{{{d{c}}}h{}}0{c{{Cb{e}}}{}{}}0{{{d{Cd}}}{{Cf{b}}}}1{h{{Cf{b}}}}222{{{d{c}}}Ch{}}00```````````````````{e{{Cl{Cj}}}Cn{{Db{}{{D`{c}}}}}}{{}{{Cl{Cj}}}}`{e{{Cl{Cj}}}Dd{{Dh{{d{j{Df{c}}}}{d{c}}}{{D`{{Cf{n}}}}}}}}1{c{{Cl{Cj}}}{{Dh{{d{jDj}}}}Dl}}23{{{d{Cd}}}{{Cl{Cj}}}}``{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{}{{Cl{Dn}}}}0{{{d{E`}}}E`}{{{d{Eb}}}Eb}{{{d{c}}{d{je}}}n{}{}}0{{}E`}{{}Eb};;{{{d{E`}}{d{jAd}}}Af}{{{d{Eb}}{d{jAd}}}Af}{cc{}}0{ce{}{}}0{{{d{jE`}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jEb}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jE`}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jEb}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{EhEh}{{Cl{Cj}}}}0{{}{{Cl{Cj}}}}0{{{d{c}}}e{}{}}01{c{{Cb{e}}}{}{}}000{{{d{c}}}Ch{}}0`{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}`{{{d{Ej}}}Ej}{{{d{c}}{d{je}}}n{}{}}{{}Ej}{{{d{Ej}}{d{jAd}}}Af}{cc{}}`{ce{}{}}`:`{{{d{jEj}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jEj}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd};;:````99998888{{fF`F`}{{Cl{Fb}}}}{{fF`F`Ab}Fd}{{}{{Cl{Fb}}}}0{{{d{Fd}}}{{Cl{Fb}}}}{{{d{Ff}}}{{Cl{Fb}}}}{{{d{Fh}}}{{Cl{Fb}}}}{{{d{Fj}}}{{Cl{Fb}}}}4444{{{d{Fd}}}Fd}{{{d{Ff}}}Ff}{{{d{Fh}}}Fh}{{{d{Fj}}}Fj}{{{d{c}}{d{je}}}n{}{}}000{{}Fd}{{}Ff}{{}Fj}{{{d{Fd}}{d{jAd}}}Af}{{{d{Ff}}{d{jAd}}}Af}{{{d{Fh}}{d{jAd}}}Af}{{{d{Fj}}{d{jAd}}}Af}{cc{}}000{{{d{jFd}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFf}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFh}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFj}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{fF`F`}{{Cl{Fb}}}}{{fF`F`}Ff}{ce{}{}}000{{{d{jFd}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFf}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFh}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFj}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}`{{{d{Fd}}}h}{{{d{Ff}}}h}{{{d{Fh}}}h}{{{d{Fj}}}h}{{{d{jFd}}}n}{{{d{jFf}}}n}<<{{fF`F`Ab}Fd}{{{d{c}}}e{}{}}000>`{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{fF`F`}{{Cl{Fb}}}}{{fF`F`}Ff}```````{{{d{c}}}{{d{e}}}{}{}}000000{{{d{jc}}}{{d{je}}}{}{}}000000{{{d{G`}}}G`}{{{d{Gb}}}Gb}{{{d{Gd}}}Gd}{{{d{Gf}}}Gf}{{{d{Gh}}}Gh}{{{d{Gj}}}Gj}{{{d{Gl}}}Gl}{{{d{c}}{d{je}}}n{}{}}000000{{{d{G`}}{d{G`}}}Ab}{{{d{Gb}}{d{Gb}}}Ab}{{{d{Gd}}{d{Gd}}}Ab}{{{d{Gf}}{d{Gf}}}Ab}{{{d{Gh}}{d{Gh}}}Ab}{{{d{Gj}}{d{Gj}}}Ab}{{{d{Gl}}{d{Gl}}}Ab}{{{d{G`}}{d{jAd}}}Af}{{{d{Gb}}{d{jAd}}}Af}{{{d{Gd}}{d{jAd}}}Af}{{{d{Gf}}{d{jAd}}}Af}{{{d{Gh}}{d{jAd}}}Af}{{{d{Gj}}{d{jAd}}}Af}{{{d{Gl}}{d{jAd}}}Af}{cc{}}000000{ce{}{}}000000{{{d{c}}}e{}{}}000000{c{{Cb{e}}}{}{}}0000000000000{{{d{c}}}Ch{}}000000````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{c}}}{{Cl{Fb}}}{}}000{{{d{Gn}}}Gn}{{{d{H`}}}H`}{{{d{Hb}}}Hb}{{{d{Hd}}}Hd}{{{d{c}}{d{je}}}n{}{}}000{{{d{Gn}}{d{jAd}}}Af}{{{d{H`}}{d{jAd}}}Af}{{{d{Hb}}{d{jAd}}}Af}{{{d{Hd}}{d{jAd}}}Af}{cc{}}000{{{d{jc}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}{}}000{{{d{jGn}}}{{d{j{Cl{Fb}}}}}}{{{d{jH`}}}{{d{j{Cl{Fb}}}}}}{{{d{jHb}}}{{d{j{Cl{Fb}}}}}}{{{d{jHd}}}{{d{j{Cl{Fb}}}}}}`{ce{}{}}000{{{d{jc}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000``{{{d{jc}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000{{{d{jc}}{d{Cd}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000{{{d{c}}}h{}}000``{{{d{c}}}e{}{}}000{{{d{jc}}El{d{{Df{e}}}}{d{e}}}El{}{}}00{{{d{Hb}}El}El}1{{{d{Hd}}El}El}{{{d{jc}}El{En{{Bj{lEl}}}}{d{{Df{e}}}}{d{e}}}{{En{{Bj{lEl}}}}}{}{}}{{{d{jGn}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}{{{d{jH`}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}22{{{d{jHb}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}3{{{d{Gn}}}h}{{{d{H`}}}h}{{{d{Hb}}}h}{{{d{Hd}}}h}{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{{Cl{Fb}}}{{Cl{Fb}}}}0{{{Cl{Fb}}ff}{{Cl{Fb}}}}{{{Cl{Fb}}f}{{Cl{Fb}}}}``````{{{d{j{Df{c}}}}e}nDdHf}{{{d{j{Hh{c}}}}e}nDdHf}``{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00`{{{d{j{Hj{c}}}}e}nDd{{Hl{c}}}}{{{d{j{Hj{c}}}}e}nDd{{Hn{c}}}}{{{d{j{Hj{c}}}}e}nDd{{I`{c}}}}{{{d{j{Hj{c}}}}e}nDd{{Ib{c}}}}0`{{{d{{Df{c}}}}}{{Bn{{d{Id}}}}}Dd}{{}{{Hj{c}}}Dd}``{{{d{{Df{c}}}}}{{Cf{{Ih{{If{e}}}}}}}DdHf}{{{d{j{Df{c}}}}}{{Ih{{If{e}}}}}Dd{IjHf}}`{{{d{{Hj{c}}}}{d{jAd}}}AfDd}{{{d{{Df{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Hh{c}}}}{d{jAd}}}Af{DdIl}}``{cc{}}00`{ce{}{}}00```{{{d{{Df{c}}}}}{{d{{In{l}}}}}Dd}{{{Hj{c}}{J`{c}}{Jb{c}}c}{{Cf{{Hh{c}}}}}Dd}``{{{d{j{Df{c}}}}}{{Bn{e}}}DdHf}{{{d{{Df{c}}}}}lDd}{{{Hh{c}}}{{Cf{n}}}Dd}```{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00```````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{jc}}}{{d{je}}}{}{}}000000000{{{d{Jd}}}Jf}`{{{d{jCj}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{Cl{Cj}}}{{Cl{Dn}}}}{{{d{Jh}}}Jh}{{{d{Jj}}}Jj}{{{d{Jl}}}Jl}{{{d{Jn}}}Jn}{{{d{K`}}}K`}{{{d{Jd}}}Jd}{{{d{Kb}}}Kb}{{{d{Kd}}}Kd}{{{d{Ef}}}Ef}{{{d{Ed}}}Ed}{{{d{c}}{d{je}}}n{}{}}000000000{{{d{Jn}}{d{Jn}}}A`}```{{}Jl}{{{d{Jh}}{d{Jh}}}Ab}{{{d{Jj}}{d{Jj}}}Ab}{{{d{Jl}}{d{Jl}}}Ab}{{{d{Jn}}{d{Jn}}}Ab}{{{d{Jd}}{d{Jd}}}Ab}{{{d{Kb}}{d{Kb}}}Ab}{{{d{Kd}}{d{Kd}}}Ab}{{{d{Ef}}{d{Ef}}}Ab}{{{d{Ed}}{d{Ed}}}Ab}{{{d{Jh}}{d{jAd}}}Af}{{{d{Jj}}{d{jAd}}}Af}{{{d{Jl}}{d{jAd}}}Af}{{{d{Jn}}{d{jAd}}}Af}{{{d{K`}}{d{jAd}}}Af}{{{d{Jd}}{d{jAd}}}Af}{{{d{Kb}}{d{jAd}}}Af}{{{d{Kd}}{d{jAd}}}Af}{{{d{Ef}}{d{jAd}}}Af}{{{d{Ed}}{d{jAd}}}Af}{cc{}}000000000{{JfKf}{{Cf{Jd}}}}{{{d{Jj}}{d{jc}}}nBl}{{{d{Jl}}{d{jc}}}nBl}{{{d{Jn}}{d{jc}}}nBl}{{{d{Jd}}{d{jc}}}nBl}{{{d{Kb}}{d{jc}}}nBl}{{{d{Kd}}{d{jc}}}nBl}{{{d{Ef}}{d{jc}}}nBl}{{{d{Ed}}{d{jc}}}nBl}`{{{d{Jj}}Kh}Jj}{ce{}{}}0000000000{{}K`}{{}{{Cf{{Kj{hJf}}}}}}`{{{d{K`}}}Kl}{{{d{Jd}}}Kf}```{{Jl{En{Jn}}}Jd}{{lKnKnKnKnJdKb}Ef}{{lKnKnKnKn{En{Jn}}}Ed}{{{d{jK`}}}{{Bn{c}}}{}}0{{{d{jK`}}Kl}{{Bn{c}}}{}}{{{d{jDn}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jDn}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{Kj{c{Cl{Cj}}}}}{{Cf{{J`{e}}}}}{{L`{Cd}}}Dd}{{{d{Jn}}{d{Jn}}}{{Bn{A`}}}}`{{{d{K`}}}{{Bj{Kl{Bn{Kl}}}}}}`{{{d{c}}}e{}{}}000000000{c{{Cb{e}}}{}{}}{Lb{{Cb{Jhc}}}{}}11{Jf{{Cf{Jl}}}}{{{d{Cd}}}{{Cb{Jnc}}}{}}33333333333333333{{{d{c}}}Ch{}}000000000`````````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{Hl{{Cl{Hl}}}}{I`{{Cl{I`}}}}{Ib{{Cl{Ib}}}}{Hn{{Cl{Hn}}}}{{{d{jHl}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cf{Ab}}}Dd}{{{d{jI`}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jIb}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{j{Ld{c}}}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cf{Ab}}}Dd}{{{d{j{Lf{c}}}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{j{Lh{c}}}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{{Ld{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lf{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lh{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lj{c}}}}{d{jAd}}}Af{DdIl}}{cc{}}000{ce{}{}}000{{Hle}{{Ld{c}}}Dd{{Hl{c}}}}{{I`e}{{Lf{c}}}Dd{{I`{c}}}}{{Ibe}{{Lh{c}}}Dd{{Ib{c}}}}{{Hne}{{Lj{c}}}Dd{{Hn{c}}}}{{Hl{Cl{Hl}}}{{Cl{Hl}}}}{{I`{Cl{I`}}}{{Cl{I`}}}}{{Ib{Cl{Ib}}}{{Cl{Ib}}}}{{Hn{Cl{Hn}}}{{Cl{Hn}}}}{{{d{jHn}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{j{Lj{c}}}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jHn}}KlEl{d{{Df{c}}}}{d{c}}}ElDd}{{{d{j{Lj{c}}}}KlEl{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jHn}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{j{Lj{c}}}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{jHn}}KlEl{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{j{Lj{c}}}}KlEl{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000`````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{Fb{{Cl{Fb}}}}{{{d{Fb}}}{{Cl{Fb}}}}{{{d{Ll}}}{{Cl{Fb}}}}{{{d{jLl}}c}nCn}{{}Ll}{{{d{Fl}}}{{Bn{{d{c}}}}}{}}{{{d{Fl}}{d{jAd}}}Af}{cc{}}{{{d{jFb}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}5{{{d{jLl}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jLn}}}{{d{j{Cl{Fb}}}}}}{ce{}{}}{CnFl}0{{{d{jFb}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFb}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFb}}{d{Cd}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}{d{Cd}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{Fb}}}h}{{{d{Ll}}}h}{{{d{jLn}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}0{{{d{jLl}}c}{{En{{Bj{lEl}}}}}{{M`{{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}{{{d{jLn}}cEl}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{{M`{El{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}0{{{d{jLn}}{Cl{Fb}}}{{Cl{Fb}}}}0{{{d{Ln}}El}El}0{{{d{jLn}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}0{{{d{Ln}}}h}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}{{{d{jLn}}}{{Cl{Fb}}}}0````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Mb}}}Mb}{{{d{c}}{d{je}}}n{}{}}{{{d{Mb}}{d{Mb}}}A`}{{{Md{}{{D`{{Bn{h}}}}}}Ll}{{Cl{Cj}}}}{Mf{{Cl{Cj}}}}0{{{d{Mb}}{d{Mb}}}Ab}{{{d{Mb}}{d{jAd}}}Af}{{{d{Cd}}{d{Cd}}}{{Cl{Cj}}}}{cc{}}{ce{}{}}5{{{d{Mb}}{d{Mb}}}{{Bn{A`}}}}{{lMb{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{Md{{d{{Mh{h}}}}}{{D`{{Bn{h}}}}}}}{{Cl{Cj}}}}{{{d{c}}}e{}{}}{{}{{Cl{Cj}}}}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}`````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{ce{En{g}}}{{Cl{Ib}}}{{Mj{h}}}{{Mj{h}}}{{Mj{h}}}}{{{d{jMl}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{Ml}}}Ml}{{{d{c}}{d{je}}}n{}{}}{{{d{Ml}}{d{jAd}}}Af}?>:887``{{{Hj{c}}}{{Hj{c}}}Dd}{{{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cf{Ab}}}Dd}{{{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}0`````9999988888{{{d{jMn}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jN`}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jNb}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jNd}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{jNf}}l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{Mn}}{d{jAd}}}Af}{{{d{N`}}{d{jAd}}}Af}{{{d{Nb}}{d{jAd}}}Af}{{{d{Nd}}{d{jAd}}}Af}{{{d{Nf}}{d{jAd}}}Af}{cc{}}0000{ce{}{}}0000{{BhBh}Nb}{{BhBhBhBh}Nd}{c{{Cb{e}}}{}{}}000000000{{{d{c}}}Ch{}}0000```{{{Hh{c}}{En{{Nh{c}}}}}{{Hh{c}}}Dd}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{{d{jNj}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{Nj}}}Nj}{{{d{c}}{d{je}}}n{}{}}{{{d{Nj}}{d{Nj}}}Ab}{{{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cf{Ab}}}Dd}{{{d{{Nh{c}}}}{d{jAd}}}AfDd}{{{d{Nj}}{d{jAd}}}Af}??>>{{l{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{ceikAb}{{Bj{{Nh{g}}Nj}}}{{Mj{{Nl{Cd}}}}}{{Mj{{Nl{Cd}}}}}Dd{{Nn{g}}}{{I`{g}}}}{{{d{c}}}e{}{}}>>>>==`;:{c{{Cl{Ib}}}{{Mj{{Nl{Cd}}}}}}{{{d{jO`}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{O`}}}O`}:{{{d{O`}}{d{O`}}}Ab}{{{d{O`}}{d{jAd}}}Af}{cc{}}{ce{}{}}7{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}`{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{e{{Cl{Hl}}}Dd{{Nn{c}}}}{{{d{j{Ob{c}}}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cf{Ab}}}Dd}{{{d{{Ob{c}}}}{d{jAd}}}Af{IlDd}}87665```444333{{ceg{Md{{d{{Fn{l}}}}El}{{D`{Ab}}}}}{{Cl{Fb}}}{{Mj{h}}}FbFb}{{fF`F`}{{Cl{Fb}}}}{{F`F`}{{Cl{Fb}}}}{{{d{Od}}}{{Cl{Fb}}}}{{{d{Of}}}{{Cl{Fb}}}}{{{d{Oh}}}{{Cl{Fb}}}}{{}{{Cl{Fb}}}}0{{{d{Of}}}Of}{{{d{Oh}}}Oh}{{{d{c}}{d{je}}}n{}{}}0{{}Of}{{}Oh}{{{d{Od}}{d{jAd}}}Af}{{{d{Of}}{d{jAd}}}Af}{{{d{Oh}}{d{jAd}}}Af}{cc{}}00{{{d{jOd}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jOf}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jOh}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{ce{}{}}00{{{d{jOd}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jOf}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jOh}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{Od}}}h}{{{d{Of}}}h}{{{d{Oh}}}h}{{ceg{Md{{d{{Fn{l}}}}El}{{D`{Ab}}}}}Od{{Mj{h}}}FbFb}{{fF`F`}Of}{{F`F`}Oh}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Oj}}}Oj}{{{d{c}}{d{je}}}n{}{}}{{{d{Oj}}{d{Oj}}}A`}``{{{d{Oj}}{d{Oj}}}Ab}{{{d{Oj}}{d{jAd}}}Af}{cc{}}{{{d{Oj}}{d{jc}}}nBl}{ce{}{}}{{ce}{{Cf{n}}}{{L`{Cd}}}{{L`{Cd}}}}{{ceOjKl}{{Cf{n}}}{{L`{Cd}}}{{L`{Cd}}}}{{{d{Oj}}{d{Oj}}}{{Bn{A`}}}}?>>={{{d{Cd}}{d{Cd}}Ol}{{Cf{n}}}}``==<<{{{d{jOn}}{d{j{Df{c}}}}{d{c}}}{{Cf{n}}}Dd}{{{d{On}}}On}{{{d{A@`}}}A@`}=={{}On}{{}A@`}{{{d{A@`}}{d{A@`}}}Ab}{{{d{On}}{d{jAd}}}Af}{{{d{A@`}}{d{jAd}}}Af}```>><<```{{{d{{Df{c}}}}{d{A@`}}}hDd}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}000{{{d{c}}}Ch{}}0``````````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{A@b}}{En{c}}}{{Cf{A@d}}}{{Mj{h}}}}{{{d{A@d}}}A@d}{{{d{A@f}}}A@f}{{{d{Mf}}}Mf}{{{d{A@b}}}A@b}{{{d{c}}{d{je}}}n{}{}}000``{{}Mf}{{{d{A@f}}{d{A@f}}}Ab}`{{{d{A@d}}{d{jAd}}}Af}{{{d{A@f}}{d{jAd}}}Af}{{{d{Mf}}{d{jAd}}}Af}{{{d{A@b}}{d{jAd}}}Af}{cc{}}000`{ce{}{}}000``{{{d{Mf}}Kl}A@b}`{{{d{A@b}}}{{Cf{n}}}}```{{{d{c}}}e{}{}}000{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{{d{Cd}}}Mf}```````````````{{{d{j{A@h{c}}}}e}{{Cf{n}}}{DlA@jA@lA@n}{{Mj{h}}}}{{{d{j{A@h{c}}}}eLl}{{Cf{n}}}{DlA@jA@lA@n}{{Mj{h}}}}{{{d{c}}}{{d{e}}}{}{}}00000{{{d{jc}}}{{d{je}}}{}{}}00000{{{d{j{Fn{{Cl{Fb}}}}}}c}nCn}{{{d{j{AA`{c}}}}e}n{}Cn}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}{{{d{{AA`{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{}}{{{d{{AAf{c}}}}}{{AAf{c}}}Dl}{{{d{AAh}}}AAh}{{{d{{Fn{c}}}}}{{Fn{c}}}Dl}{{{d{{A@h{c}}}}}{{A@h{c}}}{DlA@jA@lA@nDl}}{{{d{{AA`{c}}}}}{{AA`{c}}}Dl}{{{d{Ol}}}Ol}{{{d{c}}{d{je}}}n{}{}}00000{{{d{{Fn{c}}}}{d{c}}}AbA@j}{{{d{{A@h{c}}}}{d{c}}}Ab{DlA@jA@lA@n}}{{{d{{AA`{c}}}}{d{c}}}AbA@j}{{{d{{A@h{c}}}}{d{Cd}}}Ab{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{Bn{{d{c}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{{AAf{c}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{Bn{{d{{Fn{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{Cd}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{{AA`{c}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{d{j{AA`{c}}}}}{DlA@jA@lA@n}}{{}{{AAf{c}}}Ij}{{}AAh}{{}{{Fn{c}}}Ij}{{}{{A@h{c}}}{DlA@jA@lA@nIj}}{{}{{AA`{c}}}{}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}0{{{d{AAh}}{d{AAh}}}Ab}{{{d{{Fn{c}}}}{d{{Fn{c}}}}}AbA@j}{{{d{Ol}}{d{Ol}}}Ab}{{{d{{Fn{c}}}}e}{{Bj{{Bn{{Fn{c}}}}{En{c}}}}}Dl{{Db{{d{c}}}{{D`{Ab}}}}}}{{{Fn{c}}e}{{Bn{{Fn{c}}}}}{}{{Db{{d{c}}}{{D`{Ab}}}}}}{{{Fn{c}}}{{En{c}}}{}}{{{d{j{A@h{l}}}}lEl}{{Cf{n}}}}{{{d{{AAf{c}}}}{d{jAd}}}AfAAj}{{{d{{AAf{c}}}}{d{jAd}}}AfIl}{{{d{AAh}}{d{jAd}}}Af}{{{d{{Fn{c}}}}{d{jAd}}}AfAAj}{{{d{{Fn{c}}}}{d{jAd}}}AfIl}{{{d{{A@h{c}}}}{d{jAd}}}Af{DlA@jA@lA@nIl}}{{{d{{AA`{c}}}}{d{jAd}}}AfAAj}{{{d{{AA`{c}}}}{d{jAd}}}AfIl}{{{d{Ol}}{d{jAd}}}Af}{{{d{{AA`{c}}}}}{{Bn{{d{c}}}}}{}}{{{d{j{A@h{c}}}}{d{c}}}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}{d{c}}}nA@j}{{{d{j{Fn{c}}}}e}n{}{{Db{{d{c}}}{{D`{Ab}}}}}}3222{{{d{j{A@h{c}}}}Kl}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cd}}}}54{{{d{{Fn{c}}}}}{{d{c}}}{}}{cc{}}00000{{{d{{Fn{c}}}}e}{{Bn{{Fn{c}}}}}Dl{{Db{{d{c}}}{{D`{Ab}}}}}}`{{{d{{AAf{c}}}}}El{}}{{{d{j{Fn{{Cl{Fb}}}}}}c}nCn}{{{d{j{AA`{c}}}}e}n{}Cn}{{{d{{A@h{c}}}}e}Ab{DlA@jA@lA@n}{{L`{Cd}}}}6{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{{AA`{c}}}}}Kl{}}{{{d{{AAf{c}}}}}Kl{}}{{{d{j{Fn{c}}}}c}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}c}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}AAhc}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}AAhc}n{DlA@jA@lA@n}}{ce{}{}}00000{{{Fn{c}}}{{`{c}}}{}}{{{d{j{Fn{c}}}}}{{`{c}}}{}}{{{d{{Fn{c}}}}}{{`{c}}}{}}{{{d{{Fn{c}}}}}Ab{}}{{{d{{AA`{c}}}}}Ab{}}{{{d{{A@h{c}}}}{d{c}}}Ab{DlA@jA@lA@n}}34{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{{{d{{Fn{c}}}}}{{d{c}}}{}}{{{d{{AA`{c}}}}}h{}}{{{d{{Fn{c}}}}}Kl{}}{{{Fn{c}}g}{{Fn{e}}}{}{}{{Db{c}{{D`{e}}}}}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{M`{{Bn{{Fn{c}}}}}{{D`{{Bn{{Fn{c}}}}}}}}}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{M`{{Fn{c}}}{{D`{{Fn{c}}}}}}}}{{{d{j{A@h{c}}}}{d{c}}}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}{d{c}}e}n{DlA@jA@lA@n}{{L`{Cd}}}}{{{d{j{A@h{c}}}}Kl}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cd}}}}{{ecg}{{Fn{c}}}{}{{AAl{}{{AAb{c}}}}}{{AAl{}{{AAb{c}}}}}}{{KlcLl{Bn{{Fn{e}}}}}{{AA`{e}}}{{Mj{h}}}{}}<{{{d{j{AA`{c}}}}}n{}}={{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}1{{{d{{A@h{c}}}}}{{En{h}}}{DlA@jA@lA@n}}2{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}407{{{Fn{c}}{d{c}}}{{Bj{{Bn{c}}{Bn{{Fn{c}}}}}}}A@j}{{{d{j{A@h{c}}}}{d{c}}}{{Bn{c}}}{DlA@jA@lA@n}}{{{Fn{c}}}{{Bj{c{Bn{{Fn{c}}}}}}}{}}{{{d{j{A@h{c}}}}}{{Bn{c}}}{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}}{{d{j{Fn{c}}}}}{}}050505{{{d{j{Fn{{Cl{Fb}}}}}}c}{{En{{Bj{lEl}}}}}{{M`{{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}{{{d{{A@h{c}}}}{d{c}}}{{Bn{{d{{AAf{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AAf{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AAf{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{AA`{c}}}}Ll}Ll{}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cd}}}}{{{d{j{AA`{c}}}}{d{Cd}}}n{}}{{{d{j{A@h{c}}}}{d{c}}}{{Bn{El}}}{DlA@jA@lA@n}}8=8=8={{{d{{AA`{c}}}}}{{d{Cd}}}{}}{{{d{{A@h{c}}}}{d{c}}}{{Bn{{d{Cd}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}Kl}{{Bn{{d{Cd}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}Kl}{{Bn{h}}}{DlA@jA@lA@n}}{{{d{c}}}e{}{}}00000{{{d{c}}}h{}}00{{{d{j{A@h{l}}}}lEl}{{Cf{{Bn{El}}}}}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{c{{Cb{e}}}{}{}}00000{e{{Bn{{Fn{c}}}}}{}{{AAl{}{{AAb{c}}}}}}111111{{Lleg}{{Cf{{A@h{i}}}}}{{Mj{h}}}{{AAl{}{{AAb{c}}}}}{{AAl{}{{AAb{El}}}}}{DlA@jA@lA@n}}{{{d{c}}}Ch{}}00000{{{d{{Fn{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{}}{{{d{{A@h{c}}}}eg}e{DlA@jA@lA@n}{}{{Db{{d{{Fn{c}}}}}{{D`{e}}}}}}{{{d{{A@h{c}}}}{d{Cd}}}{{Bn{{d{{AA`{c}}}}}}}{DlA@jA@lA@n}}`{{{d{j{A@h{c}}}}{d{Cd}}}{{Bn{{d{j{AA`{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}````{{{d{AAn}}{d{El}}}El}{{AAn{d{El}}c}AAn{{Db{El}{{D`{El}}}}}}{{{d{El}}f}{{En{El}}}}0{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{El}}{d{El}}}{{Bn{El}}}}{{{d{AB`}}}AB`}{{{d{AAn}}}AAn}{{{d{El}}}El}{{{d{c}}{d{je}}}n{}{}}00{{{d{El}}{d{El}}}Ab}{{{d{El}}c}Ab{{Mj{AB`}}}}{{{d{El}}}{{Bj{AB`AB`AB`AB`}}}}{{}AB`}{{}AAn}{{}El}{{{d{AB`}}{d{AB`}}}Ab}{{{d{AAn}}{d{AAn}}}Ab}7{{{d{AB`}}{d{jAd}}}Af}{{{d{AAn}}{d{jAd}}}Af}{{{d{El}}{d{jAd}}}Af}{{{Bj{{d{f}}{d{f}}}}}AB`}{ElAB`}{{{Bj{ff}}}AB`}{{{d{El}}}AB`}{cc{}}00{{{Bj{AB`AB`}}}El}<`{{{d{AB`}}{d{jc}}}nBl}{{{d{El}}{d{jc}}}nBl}{ce{}{}}00{{{d{El}}{d{El}}}Ab}6{{ff}AB`}{{BhBhBhBh}AAn}{{ffff}El}{{{d{ABb}}{d{El}}}AAn}{{{d{AAn}}{d{El}}}AAn}{{{d{El}}{d{El}}}AAn}{{{d{jEl}}EhEh}n}0{{{d{El}}Bh}El}0{{{d{El}}f}El}{{{d{El}}f}{{Bn{{Bj{ElEl}}}}}}{{{d{El}}F`}{{Bn{{Bj{ElEl}}}}}}{{{d{El}}}{{Bj{ElEl}}}}021{{{d{c}}}e{}{}}00{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00`````{{{d{Cd}}}{{ABd{n}}}}{{{d{jc}}fff}nFb}{c{{Cf{n}}}{{Mj{h}}}}{c{{ABd{h}}}{{Mj{h}}}}{{c{d{{Mh{{d{Cd}}}}}}}{{ABd{h}}}{{Mj{h}}}}{{c{d{{Mh{{d{Cd}}}}}}}{{Cf{n}}}{{Mj{h}}}}```````````````````````{{{d{ABf}}l}{{Cf{{Kj{hABh}}}}}}`{{{d{Dd}}l}{{Cf{h}}}}{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{Dd}}l}{{Cf{El}}}}{{{d{ABf}}l{d{{Mh{h}}}}}{{Cf{Ab}}}}{{{d{ABf}}l{d{Cd}}}{{Cf{Ab}}}}{{{d{ABj}}}ABj}{{{d{ABl}}}ABl}{{{d{ABn}}}ABn}{{{d{c}}{d{je}}}n{}{}}00{{{d{Dd}}}{{Cf{AB`}}}}{{{d{Dd}}l{d{Cd}}}{{Cf{n}}}}{{{d{ABj}}{d{ABj}}}Ab}{{{d{ABl}}{d{ABl}}}Ab}{{{d{ABn}}{d{ABn}}}Ab}`{{{d{Dd}}}{{Cf{{En{l}}}}}}{{{d{Dd}}}n}{{{d{ABj}}{d{jAd}}}Af}{{{d{ABl}}{d{jAd}}}Af}{{{d{ABn}}{d{jAd}}}Af}{{{d{Dd}}l}{{Cf{n}}}}{cc{}}00{{{d{Dd}}l{d{Cd}}}{{Cf{{Bn{ABh}}}}}}{{{d{Dd}}l}{{Cf{AC`}}}}{{{d{Dd}}l}{{Cf{{Bn{ACb}}}}}}{{{d{Dd}}{d{{Mh{Jj}}}}{d{{Mh{Jd}}}}}{{Cf{n}}}}{{{d{ABj}}{d{jc}}}nBl}{{{d{ABl}}{d{jc}}}nBl}{{{d{ABn}}{d{jc}}}nBl}{{{d{ABf}}l{d{j{In{l}}}}{d{j{Kj{lKl}}}}}{{Cf{n}}}}{{{d{Dd}}{d{Cd}}}{{Cf{l}}}}{ce{}{}}00;{{{d{ABf}}{d{j{Df{ABf}}}}}{{Cf{n}}}}{{{d{Dd}}l}{{Cf{{En{h}}}}}}{{{d{ABf}}l{d{j{Df{ABf}}}}}{{Cf{n}}}}>{{{d{ABf}}{d{j{Df{ABf}}}}c}{{Cf{n}}}{{Dh{{d{jDj}}}}}}{{{d{Dd}}}{{Cf{Id}}}}{{{d{ABf}}lEl}{{Cf{n}}}}{{{d{ABf}}f{d{{Mh{{Bj{lEl}}}}}}}{{Cf{n}}}}``{{{d{ABf}}{d{Nn}}l}{{Cf{Ab}}}}{{{d{ABf}}Ab{d{Nn}}l}Ab}8{{{d{ABf}}c}{{Cf{n}}}{{AAd{}{{AAb{{d{l}}}}}}}}{{{d{ABf}}l{d{Dj}}{d{j{In{l}}}}}{{Cf{n}}}}{{{d{Dd}}}l}{{{d{Dd}}}{{Cf{{En{El}}}}}}{{{d{Dd}}ACd}{{Cf{n}}}};{{{d{Dd}}l{d{{Mh{ABn}}}}}{{Cf{n}}}}{{{d{ABf}}lc}{{Cf{n}}}{{Mj{b}}}}{{{d{Dd}}l{d{{Mh{ABl}}}}}{{Cf{n}}}}{{{d{ABf}}l{d{{Hj{ABf}}}}}{{Cf{n}}}}{{{d{Dd}}l{d{Cd}}ABh}{{Cf{n}}}}{{{d{Dd}}lACb}{{Cf{n}}}}{{{d{c}}}e{}{}}00{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00{{{d{ABf}}l{d{j{Df{ABf}}}}}{{Cf{n}}}}{{{d{Dd}}l}{{Cf{n}}}}{{{d{Dd}}lKnKn}{{Cf{n}}}}{{{d{ABf}}{d{j{Df{ABf}}}}Kl}{{Cf{n}}}}{{{d{ABf}}l}{{Cf{n}}}}{{{d{ABf}}l}{{Bn{f}}}}{{{d{ABf}}l}{{Cf{h}}}}``{{{d{{ACf{c}}}}l}{{Cf{h}}}ACh}{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{{ACf{c}}}}l}{{Cf{El}}}ACh}{{{d{{ACf{c}}}}}{{d{c}}}ACh}`{{{d{{ACf{c}}}}ABjElAb}{{Cf{l}}}ACh}{{{d{{ACf{c}}}}}{{Cf{AB`}}}ACh}{{{d{{ACf{c}}}}l{d{Cd}}}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}l}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}}{{Cf{{En{l}}}}}ACh}{{{d{{ACf{c}}}}}nACh}{{{d{{ACf{c}}}}{d{jAd}}}Af{IlACh}}3{cc{}}{{{d{{ACf{c}}}}l{d{Cd}}}{{Cf{{Bn{ABh}}}}}ACh}{{{d{{ACf{c}}}}l}{{Cf{AC`}}}ACh}{{{d{{ACf{c}}}}l}{{Cf{{Bn{ACb}}}}}ACh}{{{d{{ACf{c}}}}{d{{Mh{Jj}}}}{d{{Mh{Jd}}}}}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}{d{Cd}}}{{Cf{l}}}ACh}{ce{}{}}:{{{d{{ACf{c}}}}l}{{Cf{{En{h}}}}}ACh};{{}{{Cf{{ACf{ACj}}}}}}{{{d{{ACf{c}}}}}{{Cf{Id}}}ACh}{{{d{{ACf{c}}}}}lACh}{{{d{{ACf{c}}}}}{{Cf{{En{El}}}}}ACh}{{{d{{ACf{c}}}}ACd}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}l{d{{Mh{ABn}}}}}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}l{d{{Mh{ABl}}}}}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}l{d{Cd}}ABh}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}lACb}{{Cf{n}}}ACh}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}{{{d{{ACf{c}}}}l}{{Cf{n}}}ACh}{{{d{{ACf{c}}}}lKnKn}{{Cf{n}}}ACh}`````````````````````````````````````````````````````{{{d{ACl}}}{{d{Cd}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{{d{ACl}}}ACl}{{{d{ACn}}}ACn}{{{d{c}}{d{je}}}n{}{}}0{{{d{ACl}}{d{ACl}}}Ab}{{{d{ACl}}{d{jAd}}}Af}{{{d{ACn}}{d{jAd}}}Af}{cc{}}0{{{d{Cd}}}{{Cb{AClc}}}{}}{{{d{ACl}}{d{jc}}}nBl}{ce{}{}}00{{}ACn}{{{d{ACn}}}Kl}{{{d{jACn}}}{{Bn{c}}}{}}0{{{d{jACn}}Kl}{{Bn{c}}}{}}{{{d{ACn}}}{{Bj{Kl{Bn{Kl}}}}}}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}9000{{{d{c}}}Ch{}}0``````````````````````````````````````````{{{d{AD`}}{d{c}}}{{Cf{ACd}}}Dd}{{{d{ADb}}}{{En{Kf}}}}{{{d{ADb}}}{{En{f}}}}{{{d{ADb}}}{{En{Jf}}}}{{{d{ADb}}}{{En{Kl}}}}`{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{jc}}}{{d{je}}}{}{}}000000000{{{d{Id}}}Id}{{{d{AD`}}}AD`}{{{d{ADd}}}ADd}{{{d{ADb}}}ADb}{{{d{ACd}}}ACd}{{{d{ADf}}}ADf}{{{d{ADh}}}ADh}{{{d{ADj}}}ADj}{{{d{ADl}}}ADl}{{{d{ADn}}}ADn}{{{d{c}}{d{je}}}n{}{}}000000000```{{{d{Id}}{d{Id}}}Ab}{{{d{AD`}}{d{AD`}}}Ab}{{{d{ADd}}{d{ADd}}}Ab}{{{d{ADb}}{d{ADb}}}Ab}{{{d{ACd}}{d{ACd}}}Ab}{{{d{ADf}}{d{ADf}}}Ab}{{{d{ADh}}{d{ADh}}}Ab}{{{d{ADj}}{d{ADj}}}Ab}{{{d{ADl}}{d{ADl}}}Ab}{{{d{ADn}}{d{ADn}}}Ab}{{{d{Id}}{d{jAd}}}Af}0{{{d{AD`}}{d{jAd}}}Af}{{{d{ADd}}{d{jAd}}}Af}{{{d{ADb}}{d{jAd}}}Af}{{{d{ACd}}{d{jAd}}}Af}{{{d{ADf}}{d{jAd}}}Af}{{{d{ADh}}{d{jAd}}}Af}{{{d{ADj}}{d{jAd}}}Af}{{{d{ADl}}{d{jAd}}}Af}{{{d{ADn}}{d{jAd}}}Af}{cc{}}00{{{d{{AE`{Kf}}}}}ADb}{{{d{{AE`{f}}}}}ADb}2{{{AE`{Jf}}}ADb}{{{d{{AE`{Jf}}}}}ADb}{{{AE`{Kf}}}ADb}{{{AE`{f}}}ADb}666666{{{d{Id}}{d{jc}}}nBl}{{{d{AD`}}{d{jc}}}nBl}{{{d{ADd}}{d{jc}}}nBl}{{{d{ADb}}{d{jc}}}nBl}{{{d{ACd}}{d{jc}}}nBl}{{{d{ADf}}{d{jc}}}nBl}{{{d{ADh}}{d{jc}}}nBl}{{{d{ADj}}{d{jc}}}nBl}{{{d{ADl}}{d{jc}}}nBl}{{{d{ADn}}{d{jc}}}nBl}```````{ce{}{}}000000000```{{lADdcADb}ACd{{Mj{h}}}}````{{{d{c}}}e{}{}}000000000{{{d{c}}}h{}}{c{{Cb{e}}}{}{}}00{{{d{{Mh{f}}}}}{{Cb{ADbc}}}{}}1{{{d{{Mh{Jf}}}}}{{Cb{ADbc}}}{}}{{{d{{Mh{Kf}}}}}{{Cb{ADbc}}}{}}3333333333333333{{{d{c}}}Ch{}}000000000````````````````````````````````````````````{{}AEb}{{}AEd}{{{d{AEf}}El}El}{{AEbAEb}AEb}{{AEdAEd}AEd}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}3210{{{d{AEb}}}f}0{{{d{AEd}}}f}05432{{{d{c}}}{{d{e}}}{}{}}00000000{{{d{jc}}}{{d{je}}}{}{}}00000000{{{d{ABh}}}ABh}{{{d{AEb}}}AEb}{{{d{AEd}}}AEd}{{{d{ACb}}}ACb}{{{d{AEh}}}AEh}{{{d{AEj}}}AEj}{{{d{AEl}}}AEl}{{{d{AEf}}}AEf}{{{d{AC`}}}AC`}{{{d{c}}{d{je}}}n{}{}}00000000{AEbAEb}{AEdAEd}{{{d{AEb}}AEb}Ab}{{{d{AEd}}AEd}Ab}{{}AEb}{{}AEd}{{AEbAEb}AEb}{{AEdAEd}AEd}32{{{d{ABh}}{d{ABh}}}Ab}{{{d{AEb}}{d{AEb}}}Ab}{{{d{AEd}}{d{AEd}}}Ab}{{{d{ACb}}{d{ACb}}}Ab}{{{d{AEh}}{d{AEh}}}Ab}{{{d{AEj}}{d{AEj}}}Ab}{{{d{AEl}}{d{AEl}}}Ab}{{{d{AEf}}{d{AEf}}}Ab}{{{d{AC`}}{d{AC`}}}Ab}{{{d{jAEb}}c}n{{AAl{}{{AAb{AEb}}}}}}{{{d{jAEd}}c}n{{AAl{}{{AAb{AEd}}}}}}{{{d{ABh}}{d{jAd}}}Af}{{{d{AEb}}{d{jAd}}}Af}0000{{{d{AEd}}{d{jAd}}}Af}0000{{{d{ACb}}{d{jAd}}}Af}{{{d{AEh}}{d{jAd}}}Af}{{{d{AEj}}{d{jAd}}}Af}{{{d{AEl}}{d{jAd}}}Af}{{{d{AEf}}{d{jAd}}}Af}{{{d{AC`}}{d{jAd}}}Af}{cc{}}00000000{f{{Bn{AEb}}}}{f{{Bn{AEd}}}}{fAEb}0{fAEd}010{cAEb{{AAl{}{{AAb{AEb}}}}}}{cAEd{{AAl{}{{AAb{AEd}}}}}}{{{d{Cd}}}{{Bn{AEb}}}}{{{d{Cd}}}{{Bn{AEd}}}}{{{d{ABh}}{d{jc}}}nBl}{{{d{AEb}}{d{jc}}}nBl}{{{d{AEd}}{d{jc}}}nBl}{{{d{ACb}}{d{jc}}}nBl}{{{d{AEh}}{d{jc}}}nBl}{{{d{AEj}}{d{jc}}}nBl}{{{d{AEl}}{d{jc}}}nBl}{{{d{AEf}}{d{jc}}}nBl}{{{d{AC`}}{d{jc}}}nBl}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}{{AEbAEb}AEb}{{AEdAEd}AEd}{{{d{AEb}}AEb}Ab}{{{d{AEd}}AEd}Ab}{ce{}{}}00000000{AEbc{}}{AEdc{}}{{{d{AEb}}}Ab}{{{d{AEd}}}Ab}10{{{d{AEb}}}{{AEn{AEb}}}}{{{d{AEd}}}{{AEn{AEd}}}}{{{d{AEb}}}{{AF`{AEb}}}}{{{d{AEd}}}{{AF`{AEd}}}}{{AEbAbACbflAB`ff}AEl}{{AEd{Bn{El}}{Bn{El}}{Bn{El}}{Bn{El}}}AEf}{{AbAEhAEj}AC`}{AEbAEb}{AEdAEd}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}{{{d{jAEb}}AEbAb}n}{{{d{jAEd}}AEdAb}n}{{AEbAEb}AEb}{{AEdAEd}AEd}5410{{{d{c}}}e{}{}}0000000065{c{{Cb{e}}}{}{}}00000000{{{d{{Mh{f}}}}}{{Cf{AEl}}}}{{{d{{Mh{f}}}}}{{Cf{AEf}}}}222222222{{{d{c}}}Ch{}}0000000065````````{{Nne}{{AFb{c}}}Dd{{Nn{c}}}}{{{d{c}}}{{d{e}}}{}{}}000000{{{d{jc}}}{{d{je}}}{}{}}000000{{{d{AFd}}}AFd}{{{d{AFf}}}AFf}{{{d{AFh}}}AFh}{{{d{AFj}}}AFj}{{{d{c}}{d{je}}}n{}{}}000{{{d{AFd}}{d{AFd}}}Ab}{{{d{AFf}}{d{AFf}}}Ab}{{{d{AFh}}{d{AFh}}}Ab}{{{d{AFj}}{d{AFj}}}Ab}{{{d{AFd}}{d{jAd}}}Af}{{{d{AFf}}{d{jAd}}}Af}{{{d{AFh}}{d{jAd}}}Af}{{{d{AFj}}{d{jAd}}}Af}{{{d{{AFb{c}}}}{d{jAd}}}Af{IlDd}}{{{d{{AFl{c}}}}{d{jAd}}}Af{IlDd}}{{{d{{AFn{c}}}}{d{jAd}}}Af{IlDd}}{cc{}}000000{ce{}{}}000000{Nn{{AFn{c}}}Dd}{{Nne}{{AFl{c}}}Dd{{Nn{c}}}}{{{d{Nn}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{AFd}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{AFf}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{AFh}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{AFj}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{{AFb{c}}}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{{AFl{c}}}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{{AFn{c}}}}l{d{c}}}{{Cf{Ab}}}Dd}{{{d{c}}}e{}{}}000{c{{Cb{e}}}{}{}}0000000000000{{{d{c}}}Ch{}}000000","D":"HIn","p":[[5,"Color",0],[1,"reference"],[1,"u32"],[5,"String",2299],[0,"mut"],[5,"Xid",0,468],[1,"unit"],[6,"Ordering",2300],[1,"bool"],[5,"Formatter",2301],[8,"Result",2301],[6,"Error",0],[5,"ParseIntError",2302],[6,"ConnectionError",2303],[6,"ReplyError",2303],[5,"Error",2304],[6,"ReplyOrIdError",2303],[6,"ConnectError",2305],[5,"FromUtf8Error",2299],[1,"f64"],[1,"tuple"],[10,"Hasher",2306],[6,"Option",2307],[10,"Error",2308],[6,"Result",2309],[1,"str"],[8,"Result",0],[5,"TypeId",2310],[10,"KeyEventHandler",532],[5,"Box",2311],[10,"IntoMessage",802,2312],[17,"Output"],[10,"Fn",2313],[10,"XConn",1512],[5,"State",468],[10,"FnMut",2313],[8,"ClientSet",468],[10,"Clone",2314],[10,"MouseEventHandler",532],[5,"MouseDragHandler",130],[5,"MouseResizeHandler",130],[5,"MotionNotifyEvent",532],[5,"MouseEvent",532],[1,"i32"],[5,"SpacingHook",169],[5,"Rect",1422],[5,"Vec",2315],[1,"f32"],[10,"Layout",802],[5,"MainAndStack",188],[5,"CenteredMain",188],[5,"Monocle",188],[5,"Grid",188],[5,"Message",802,2312],[5,"Stack",1201,2316],[5,"IncMain",275],[5,"ExpandMain",275],[5,"ShrinkMain",275],[5,"Rotate",275],[5,"Mirror",275],[5,"UnwrapTransformer",275],[5,"Hide",275],[5,"ReflectHorizontal",366],[5,"ReflectVertical",366],[5,"Gaps",366],[5,"ReserveTop",366],[10,"Any",2317],[5,"WindowManager",468],[5,"Config",468],[10,"EventHook",736],[10,"LayoutHook",736],[10,"ManageHook",736],[10,"StateHook",736],[6,"XEvent",1752],[5,"RefCell",2318],[5,"Arc",2319],[10,"Default",2320],[10,"Debug",2301],[5,"HashSet",2321],[8,"KeyBindings",532],[8,"MouseBindings",532],[5,"MouseState",532],[1,"u8"],[6,"KeyPress",532],[5,"KeyCode",532],[6,"MouseButton",532],[6,"ModifierKey",532],[5,"ModifierKeyIter",532],[6,"MouseEventKind",532],[5,"MouseEventData",532],[1,"u16"],[8,"KeyCodeMask",532],[5,"HashMap",2322],[1,"usize"],[1,"i16"],[10,"AsRef",2323],[6,"XKeySym",2324],[5,"ComposedEventHook",736],[5,"ComposedManageHook",736],[5,"ComposedStateHook",736],[5,"ComposedLayoutHook",736],[8,"LayoutStack",802],[10,"LayoutTransformer",802,2325],[10,"FnOnce",2313],[6,"FullScreenAction",853],[1,"fn"],[5,"DMenuConfig",1131],[1,"slice"],[10,"Into",2323],[5,"DefaultWorkspace",891],[5,"DefaultTiled",911],[5,"FloatingFixed",911],[5,"FloatingCentered",911],[5,"FloatingRelative",911],[5,"SetWorkspace",911],[5,"NamedScratchPad",963],[5,"ToggleNamedScratchPad",963],[6,"Cow",2326],[10,"Query",2208],[5,"SpawnOnStartup",991],[5,"WindowSwallowing",1006],[5,"Conditional",1017,2327],[5,"Fibonacci",1017],[5,"Tatami",1017],[6,"NotifyLevel",1072],[6,"RelativePosition",1201],[5,"NotfyState",1096],[5,"CurrentStateConfig",1096],[5,"DMenu",1131],[6,"MenuMatch",1131],[6,"DMenuKind",1131],[5,"StackSet",1201,2328],[10,"PartialEq",2300],[10,"Eq",2300],[10,"Hash",2306],[5,"Workspace",1201,2329],[17,"Item"],[10,"Iterator",2330],[5,"Screen",1201,2331],[6,"Position",1201,2316],[10,"Display",2301],[10,"IntoIterator",2332],[5,"RelativeRect",1422],[5,"Point",1422],[10,"RelativeTo",1422],[8,"Result",2304],[10,"XConnExt",1512],[6,"Prop",1960],[6,"WinType",1512],[6,"ClientConfig",1512],[6,"ClientAttr",1512],[5,"WindowAttributes",1960],[6,"WmState",1960],[5,"ClientMessage",1752],[5,"Conn",1625],[10,"Connection",2333],[5,"RustConnection",2334],[6,"Atom",1665],[5,"AtomIter",1665],[6,"ClientMessageKind",1752],[6,"ClientMessageData",1752],[6,"ClientEventMask",1752],[5,"ConfigureEvent",1752],[5,"ExposeEvent",1752],[5,"PointerChange",1752],[5,"PropertyEvent",1752],[5,"ResizeRequestEvent",1752],[1,"array"],[5,"WmHintsFlags",1960],[5,"WmNormalHintsFlags",1960],[5,"WmNormalHints",1960],[6,"MapState",1960],[6,"WindowClass",1960],[5,"WmHints",1960],[5,"Iter",2335],[5,"IterNames",2335],[5,"AndQuery",2208],[5,"Title",2208],[5,"AppName",2208],[5,"ClassName",2208],[5,"StringProperty",2208],[5,"OrQuery",2208],[5,"NotQuery",2208],[15,"UnknownMouseButton",105],[15,"InvalidClientMessage",105],[15,"InvalidHexColor",105],[15,"InvalidPropertyData",105],[15,"InsufficientWorkspaces",105],[15,"UnknownKeyName",105],[15,"UnknownModifier",105],[15,"InvalidHints",105],[15,"NonUniqueTags",105],[15,"UnknownStateExtension",105]],"r":[[28,468],[802,2312],[805,2325],[806,2312],[863,2336],[864,2336],[870,2336],[879,963],[880,991],[881,963],[882,1006],[883,905],[884,963],[1017,2327],[1208,2316],[1211,2331],[1212,2316],[1213,2328],[1215,2329],[1512,1665],[1523,1960],[1524,2208],[1531,1960],[1534,1752]],"b":[[50,"impl-Debug-for-Xid"],[51,"impl-Display-for-Xid"],[52,"impl-Display-for-Error"],[53,"impl-Debug-for-Error"],[57,"impl-From%3CParseIntError%3E-for-Error"],[58,"impl-From%3CConnectionError%3E-for-Error"],[59,"impl-From%3CReplyError%3E-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CReplyOrIdError%3E-for-Error"],[63,"impl-From%3CConnectError%3E-for-Error"],[64,"impl-From%3CFromUtf8Error%3E-for-Error"],[65,"impl-From%3Cu32%3E-for-Color"],[66,"impl-From%3C(f64,+f64,+f64,+f64)%3E-for-Color"],[67,"impl-From%3C(f64,+f64,+f64)%3E-for-Color"],[93,"impl-TryFrom%3C%26str%3E-for-Color"],[95,"impl-TryFrom%3CString%3E-for-Color"],[818,"impl-Stack%3CBox%3Cdyn+Layout%3E%3E"],[819,"impl-Layout-for-Stack%3CBox%3Cdyn+Layout%3E%3E"],[1270,"impl-Display-for-Screen%3CC%3E"],[1271,"impl-Debug-for-Screen%3CC%3E"],[1273,"impl-Display-for-Stack%3CT%3E"],[1274,"impl-Debug-for-Stack%3CT%3E"],[1276,"impl-Display-for-Workspace%3CT%3E"],[1277,"impl-Debug-for-Workspace%3CT%3E"],[1322,"impl-IntoIterator-for-Stack%3CT%3E"],[1323,"impl-IntoIterator-for-%26mut+Stack%3CT%3E"],[1324,"impl-IntoIterator-for-%26Stack%3CT%3E"],[1455,"impl-From%3C(%26u32,+%26u32)%3E-for-Point"],[1456,"impl-From%3CRect%3E-for-Point"],[1457,"impl-From%3C(u32,+u32)%3E-for-Point"],[1458,"impl-From%3C%26Rect%3E-for-Point"],[1853,"impl-Debug-for-XEvent"],[1854,"impl-Display-for-XEvent"],[1867,"impl-From%3C%26%5Bu16;+10%5D%3E-for-ClientMessageData"],[1868,"impl-From%3C%26%5Bu32;+5%5D%3E-for-ClientMessageData"],[1870,"impl-From%3C%5Bu8;+20%5D%3E-for-ClientMessageData"],[1871,"impl-From%3C%26%5Bu8;+20%5D%3E-for-ClientMessageData"],[1872,"impl-From%3C%5Bu16;+10%5D%3E-for-ClientMessageData"],[1873,"impl-From%3C%5Bu32;+5%5D%3E-for-ClientMessageData"],[1929,"impl-TryFrom%3C%26%5Bu32%5D%3E-for-ClientMessageData"],[1931,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-ClientMessageData"],[1932,"impl-TryFrom%3C%26%5Bu16%5D%3E-for-ClientMessageData"],[2014,"impl-WmHintsFlags"],[2015,"impl-Flags-for-WmHintsFlags"],[2016,"impl-Flags-for-WmNormalHintsFlags"],[2017,"impl-WmNormalHintsFlags"],[2080,"impl-LowerHex-for-WmHintsFlags"],[2081,"impl-Octal-for-WmHintsFlags"],[2082,"impl-UpperHex-for-WmHintsFlags"],[2083,"impl-Binary-for-WmHintsFlags"],[2084,"impl-Debug-for-WmHintsFlags"],[2085,"impl-LowerHex-for-WmNormalHintsFlags"],[2086,"impl-Binary-for-WmNormalHintsFlags"],[2087,"impl-UpperHex-for-WmNormalHintsFlags"],[2088,"impl-Debug-for-WmNormalHintsFlags"],[2089,"impl-Octal-for-WmNormalHintsFlags"],[2107,"impl-Flags-for-WmHintsFlags"],[2108,"impl-WmHintsFlags"],[2109,"impl-WmNormalHintsFlags"],[2110,"impl-Flags-for-WmNormalHintsFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKwEnQAgAAUAJwAEAC4AAwAzAAUAOgACAD4ABgBGAAEATwAAAFYAAABYAA4AhQADAIsABQCTAAEAmQADAKEAAQCkAAUAqwABAK4AAwC2AAAAuAAEAMEABwDNAAMA1QAOAOgAAwDyAAMA9wADAAABAwAGAQsAGwEpAFMBGwBzARcAjwEHAJwBAwCiAQsAsAEgAN8BBQDtAQAA8wECAAwCCAA8AhMAVAIUAGwCEwCLAgcAnwIBAKMCAACrAgIAsQIAALMCAAC1AioA6QIHAPgCBgAQAwAAEgMAABQDAAAWAwwAKAMBACwDAAAuAwAAMAMAADQDAAA6AwAAPAMAAD4DAABAAwAATQMCAFoDBABiAwEAaAMAAGsDAABtAwgAfQMBAIADAwCGAwMAlQMTALUDDgDIAwcA0QMBANkDBgDhAwEA5AMEAOsDAwDwAwEA8wMBAPcDAgD9AwUABgQCAAsECAAXBAIAHQQFACYECgA1BAQAPAQBAD8EAABDBAQASwQNAGQEBwB2BAcAfwQHAIkEAQCMBAMAoQQPAMMECwDTBAsA6QQEAPAEAgD3BAgAKwUCAGkFCAB0BQUAewUFAIIFBQCXBQUAngUFAKcFDAC3BQAAugUBAMUFAQDSBQsA6QUAAPQFAQD8BQAA/wUAAAMGBQAMBgUAFAYCABoGAgAlBgIARwYLAFwGAwBjBgEAZgYDAGsGBABxBgIAdQYMALcGCwDFBgEAyQYPAAkHJwA0BxQATAcBAE8HAwBZBwkAfAcrAOAHAQDnByMADwgBABUICAAgCBAAPAgAAD8IAABGCAgAXggBAHcICACCCAgAjQgRAKoIIADcCB8A"}],\ +["penrose",{"t":"PFPPGPPPPPPPPPPPPIPPPPPPPPPPFNNNNNNNNCNNNNNCQNNNNCNNNNNNNNNNNNNNNNNNNNNQNNNQQNNCNNNNQNQNNNNNNNNNNNNNNNCCCOOOOOOOOOOOOOCCCHHCHHHHHHFFNNNNNNNNNNNNHHNNNNNNNNNNHHHHNNHNNNNNNFNNONNNNNONONONNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNCNNNNNNNNNNNNNNFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIIFFFFNNCONNNNNNONNNNNONNOONNONNNOONNNCNNNCOONNOONNNOOONNNNNNNNNPPPPPPIFIIKGPPPPGFFIGFFKGFPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNOMHNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNHONNOOONNNNNNMMHNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFKKKKNNNNNNNNNNNNMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKIKFNNNMNNNNNNMNNMNNNMNNNNNMNNNNNNNNNNNNMNNNNNCCCCPGPPNNNNNHHHNNHNNHNHHNHNNNEEEEEECCCCCCFNNNNNNNNNNNNNSSHHHHFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSFFHNNNNNNNNHNNNNNNHNNNNNNNNFNNNNNNNNNNNNNNFNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGNNNNNCCNNNNNHHNNNNNHFFNNNNNNNNNNNNNNOOONNNNOOOHNNNNNNNNFFGPGPPPPONNNNNNNNNNNNNNNNNOONNONNNNNNNNONNNNOONONOOONNNNNNNNNNNNNNNNNPPPPPPPGGPFFFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOHHHHHHEPPPGGPPPPPEEPPPPPGEKKENCMNNNNNNMNNNNNNNNMMNNNCMMNNNMNNNMMMMNNNNMNNNMNMNMNMNNCCNNNNNMMMNMNMNMMNNNNNNNNNNNNNMMNNNNFINNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSGPFPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFPGGFPPPPPPFPPPPPPPPFFPPPFPPPPPPPPPPPPPGONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOONNNNNNNNNNOOONOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOPPPPTTTTTPPPGPTTTTTTTTGTTPTTPPPTPFGPFPFFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFKFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ClientIsNotVisible","Color","Custom","Err","Error","InsufficientWorkspaces","InvalidClientMessage","InvalidHexColor","InvalidHints","InvalidPropertyData","InvalidUtf8","Io","NoScreens","NonUniqueTags","Ok","ParseInt","Randr","Result","UnknownClient","UnknownKeyName","UnknownModifier","UnknownMouseButton","UnknownStateExtension","X11rbConnect","X11rbConnection","X11rbReplyError","X11rbReplyOrIdError","X11rbX11Error","Xid","argb_u32","as_rgb_hex_string","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin","clone","clone","clone_into","clone_into","cmp","core","custom_error","default","deref","eq","eq","extensions","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","impl_message","into","into","into","manage_hooks","map","new_from_hex","partial_cmp","pure","rgb","rgb_u32","rgba","rgba_u32","simple_transformer","source","stack","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","util","x","x11rb","button","format","hex_code","id","n_screens","n_ws","name","name","prop","reason","tags","ty","type_id","actions","hooks","layout","broadcast_layout_message","exit","floating","key_handler","log_current_state","modify_with","remove_and_unmap_focused_client","send_layout_message","spawn","MouseDragHandler","MouseResizeHandler","borrow","borrow","borrow_mut","borrow_mut","boxed_default","boxed_default","clone","clone","clone_into","clone_into","default","default","float_all","float_focused","fmt","fmt","from","from","into","into","on_motion","on_motion","on_mouse_event","on_mouse_event","reposition","resize","sink_all","sink_focused","to_owned","to_owned","toggle_floating_focused","try_from","try_from","try_into","try_into","type_id","type_id","SpacingHook","borrow","borrow_mut","bottom_px","clone","clone_into","default","fmt","from","inner_px","into","outer_px","to_owned","top_px","transform_initial","transform_positions","try_from","try_into","type_id","CenteredMain","Grid","MainAndStack","Monocle","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bottom","bottom_unboxed","boxed","boxed","boxed_clone","boxed_clone","boxed_clone","boxed_clone","boxed_default","boxed_default","boxed_default_rotated","boxed_default_rotated","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","default","fmt","fmt","fmt","fmt","from","from","from","from","handle_message","handle_message","handle_message","handle_message","horizontal","horizontal_unboxed","into","into","into","into","layout","layout","layout","layout","messages","name","name","name","name","rotate","rotate","side","side_mirrored","side_unboxed","to_owned","to_owned","to_owned","to_owned","top","transformers","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vertical","vertical_unboxed","ExpandMain","Hide","IncMain","Mirror","Rotate","ShrinkMain","UnwrapTransformer","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Gaps","ReflectHorizontal","ReflectVertical","ReserveTop","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","boxed_clone","boxed_clone","boxed_clone","boxed_clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","fmt","fmt","fmt","fmt","from","from","from","from","handle_message","handle_message","handle_message","handle_message","inner_mut","inner_mut","inner_mut","inner_mut","inner_px","into","into","into","into","layout","layout","layout","layout","layout","layout","layout_empty","layout_empty","layout_empty","layout_empty","layout_workspace","layout_workspace","layout_workspace","layout_workspace","name","name","name","name","outer_px","px","to_owned","to_owned","to_owned","to_owned","transform_initial","transform_initial","transform_initial","transform_initial","transform_initial","transform_initial","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transform_positions","transformed_name","transformed_name","transformed_name","transformed_name","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap","wrap","wrap","wrap","ClientSet","ClientSpace","Config","State","WindowManager","Xid","add_extension","add_extension","bindings","border_width","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client_set","compose_or_set_event_hook","compose_or_set_layout_hook","compose_or_set_manage_hook","compose_or_set_refresh_hook","compose_or_set_startup_hook","config","current_event","default","default_layouts","event_hook","extension","extension_or_default","floating_classes","fmt","fmt","fmt","focus_follow_mouse","focused_border","from","from","from","hooks","into","into","into","layout","layout_hook","manage_hook","mapped_clients","new","normal_border","refresh_hook","remove_extension","root","run","startup_hook","state","tags","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Alt","Backspace","Ctrl","Delete","Down","Escape","KeyBindings","KeyCode","KeyCodeMask","KeyCodeValue","KeyEventHandler","KeyPress","Left","Left","Meta","Middle","ModifierKey","ModifierKeyIter","MotionNotifyEvent","MouseBindings","MouseButton","MouseEvent","MouseEventData","MouseEventHandler","MouseEventKind","MouseState","PageDown","PageUp","Press","Release","Return","Right","Right","ScrollDown","ScrollUp","Shift","Tab","Up","Utf8","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","button","button","call","click_handler","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","code","data","data","default","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_detail_and_state","hash","hash","hash","hash","hash","hash","hash","hash","id","ignoring_modifier","into","into","into","into","into","into","into","into","into","into","into_iter","iter","keycodes_from_xmodmap","kind","len","mask","mask","modifiers","modifiers","new","new","new","next","next_back","nth","on_motion","on_mouse_event","parse_keybindings_with_xmodmap","partial_cmp","rpt","size_hint","state","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","wpt","ComposedEventHook","ComposedLayoutHook","ComposedManageHook","ComposedStateHook","EventHook","LayoutHook","ManageHook","StateHook","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","boxed","boxed","boxed","boxed","call","call","call","call","call","call","fmt","fmt","fmt","fmt","from","from","from","from","into","into","into","into","then","then","then","then","then_boxed","then_boxed","then_boxed","then_boxed","transform_initial","transform_initial","transform_initial_for_screen","transform_initial_for_screen","transform_positions","transform_positions","transform_positions_for_screen","transform_positions_for_screen","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","IntoMessage","Layout","LayoutStack","LayoutTransformer","Message","borrow","borrow_mut","boxed","boxed_clone","boxed_clone","broadcast_message","default","downcast_ref","fmt","from","handle_message","handle_message","handle_message","inner_mut","into","into_message","into_message","layout","layout","layout_empty","layout_empty","layout_workspace","layout_workspace","name","name","passthrough_message","passthrough_message","run_and_replace","run_transform","run_transform","swap_inner","swap_inner","transform_initial","transform_initial","transform_positions","transform_positions","transformed_name","try_from","try_into","type_id","unwrap","unwrap","actions","hooks","layout","util","Add","FullScreenAction","Remove","Toggle","borrow","borrow_mut","clone","clone_into","cmp","create_or_switch_to_workspace","dmenu_focus_client","dmenu_focus_tag","eq","fmt","focus_or_spawn","from","into","launch_dmenu","partial_cmp","set_fullscreen_state","switch_to_workspace","to_owned","toggle_fullscreen","try_from","try_into","type_id","NamedScratchPad","SpawnOnStartup","ToggleNamedScratchPad","WindowSwallowing","add_ewmh_hooks","add_named_scratchpads","default_workspaces","ewmh","manage","named_scratchpads","startup","window_swallowing","DefaultWorkspace","borrow","borrow_mut","boxed","call","clone","clone_into","fmt","from","into","to_owned","try_from","try_into","type_id","EWMH_SUPPORTED_ATOMS","WM_NAME","add_ewmh_hooks","event_hook","refresh_hook","startup_hook","DefaultTiled","FloatingCentered","FloatingFixed","FloatingRelative","SetWorkspace","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","call","call","call","call","call","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","into","into","into","into","into","new","new","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","NSP_TAG","NamedScratchPad","ToggleNamedScratchPad","add_named_scratchpads","borrow","borrow","borrow_mut","borrow_mut","call","clone","clone_into","eq","event_hook","fmt","fmt","from","from","into","into","manage_hook","new","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","SpawnOnStartup","borrow","borrow_mut","boxed","call","clone","clone_into","eq","fmt","from","into","to_owned","try_from","try_into","type_id","WindowSwallowing","borrow","borrow_mut","boxed","call","fmt","from","into","try_from","try_into","type_id","Conditional","Fibonacci","Tatami","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","boxed","boxed","boxed","boxed_clone","boxed_clone","boxed_clone","boxed_default","boxed_default","clone","clone","clone_into","clone_into","default","default","fmt","fmt","fmt","from","from","from","handle_message","handle_message","handle_message","into","into","into","layout","layout","layout","name","name","name","new","new","new","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Critical","Low","Normal","NotifyLevel","borrow","borrow_mut","clone","clone_into","cmp","debug","dmenu","eq","fmt","from","hash","into","notify_send","notify_send_custom","partial_cmp","to_owned","try_from","try_into","type_id","update_monitors_via_xrandr","CurrentStateConfig","NotfyState","borrow","borrow","borrow_mut","borrow_mut","call","clone","clone","clone_into","clone_into","default","default","eq","fmt","fmt","focused_client","focused_screen","focused_tag","from","from","into","into","line_per_stat","n_clients","n_mapped_clients","summarise_state","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","DMenu","DMenuConfig","DMenuKind","Line","MenuMatch","NoMatch","Rust","Suckless","UserInput","bg_color","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_menu","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","custom_font","custom_prompt","default","eq","fg_color","fmt","fmt","fmt","fmt","from","from","from","from","ignore_case","into","into","into","into","kind","n_lines","new","password_input","run","selected_color","show_line_numbers","show_on_bottom","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","with_prompt","Above","After","Before","Below","Focus","Head","Left","Position","RelativePosition","Right","Screen","Stack","StackSet","Tail","Workspace","add_invisible_workspace","add_workspace","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","broadcast_message","broadcast_message","clients","clients","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contains","contains","contains","contains_tag","current_client","current_screen","current_stack","current_tag","current_workspace","current_workspace_mut","default","default","default","default","default","drag_workspace_backward","drag_workspace_forward","eq","eq","eq","extract","filter","flatten","float","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focus","focus_client","focus_down","focus_down","focus_element","focus_element_by","focus_head","focus_head","focus_next_workspace","focus_previous_workspace","focus_screen","focus_tag","focus_up","focus_up","focused","from","from","from","from","from","from","from_filtered","geometry","geometry","handle_message","handle_message","has_floating_windows","head","hidden_workspace_clients","hidden_workspaces","hidden_workspaces_mut","id","index","insert","insert","insert_at","insert_at","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_empty","is_empty","is_floating","iter","iter_mut","kill_focused","last","layout_name","len","map","modify","modify_occupied","move_client_to_current_tag","move_client_to_tag","move_focused_to_screen","move_focused_to_tag","new","new","next_layout","next_layout","next_screen","non_hidden_workspaces","on_screen_workspace_clients","on_screen_workspaces","ordered_tags","ordered_workspaces","previous_layout","previous_layout","previous_screen","pull_tag_to_screen","remove","remove_client","remove_focused","remove_focused","reverse","rotate_down","rotate_down","rotate_focus_to_head","rotate_focus_to_head","rotate_up","rotate_up","run_and_replace","screen_for_client","screens","screens_mut","set_available_layouts","set_layout_by_name","set_layout_by_name","sink","swap_down","swap_down","swap_focus_and_head","swap_focus_and_head","swap_up","swap_up","tag","tag_for_client","tag_for_screen","tag_for_workspace_id","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","toggle_floating_state","toggle_tag","try_from","try_from","try_from","try_from","try_from","try_from","try_from_iter","try_into","try_into","try_into","try_into","try_into","try_into","try_new","type_id","type_id","type_id","type_id","type_id","type_id","unravel","with","workspace","workspace","workspace_mut","workspaces","workspaces_mut","Point","Rect","RelativeRect","RelativeTo","applied_to","apply_as_rect","as_columns","as_rows","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","centered_in","clone","clone","clone","clone_into","clone_into","clone_into","contains","contains_point","corners","default","default","default","eq","eq","eq","fmt","fmt","fmt","from","from","from","from","from","from","from","from","fullscreen","h","hash","hash","into","into","into","is_larger_than","midpoint","new","new","new","relative_to","relative_to","relative_to","reposition","resize","scale_h","scale_w","shrink_in","split_at_height","split_at_height_perc","split_at_mid_height","split_at_mid_width","split_at_width","split_at_width_perc","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","w","x","x","y","y","notify","print_layout_result","spawn","spawn_for_output","spawn_for_output_with_args","spawn_with_args","Atom","BorderColor","BorderPx","CheckWin","ClientAttr","ClientConfig","ClientEventMask","ClientUnmapMask","InputOnly","InputOutput","Position","Prop","Query","RootEventMask","StackAbove","StackBelow","StackBottom","StackTop","WinType","WindowAttributes","XConn","XConnExt","XEvent","all_props_for","atom","atom_name","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client_geometry","client_should_float","client_supports_protocol","clone","clone","clone","clone_into","clone_into","clone_into","cursor_position","delete_prop","eq","eq","eq","event","existing_clients","flush","fmt","fmt","fmt","focus","from","from","from","get_prop","get_window_attributes","get_wm_state","grab","hash","hash","hash","hide","intern_atom","into","into","into","kill","kill_focused","list_props","manage","map","modify_and_refresh","next_event","position_client","position_clients","property","query","query","query_or","refresh","restack","reveal","root","screen_details","send_client_message","set_active_client","set_client_attributes","set_client_border_color","set_client_config","set_initial_properties","set_prop","set_wm_state","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unmanage","unmap","warp_pointer","warp_pointer_to_screen","warp_pointer_to_window","window_pid","window_title","Conn","RustConn","atom_name","borrow","borrow_mut","client_geometry","connection","conversions","create_window","cursor_position","delete_prop","destroy_window","existing_clients","flush","fmt","focus","from","get_prop","get_window_attributes","get_wm_state","grab","intern_atom","into","kill","list_props","map","new","next_event","root","screen_details","send_client_message","set_client_attributes","set_client_config","set_prop","set_wm_state","try_from","try_into","type_id","unmap","warp_pointer","AUTO_FLOAT_WINDOW_TYPES","Atom","Atom","AtomIter","Cardinal","Manager","NetActiveWindow","NetClientList","NetClientListStacking","NetCurrentDesktop","NetDesktopNames","NetDesktopViewport","NetNumberOfDesktops","NetSupported","NetSupportingWmCheck","NetSystemTrayOpcode","NetSystemTrayOrientation","NetSystemTrayOrientationHorz","NetSystemTrayS0","NetWindowTypeCombo","NetWindowTypeDesktop","NetWindowTypeDialog","NetWindowTypeDnd","NetWindowTypeDock","NetWindowTypeDropdownMenu","NetWindowTypeMenu","NetWindowTypeNormal","NetWindowTypeNotification","NetWindowTypePopupMenu","NetWindowTypeSplash","NetWindowTypeToolbar","NetWindowTypeUtility","NetWmDesktop","NetWmName","NetWmState","NetWmStateDemandsAttention","NetWmStateFullscreen","NetWmStateHidden","NetWmStrut","NetWmWindowType","UTF8String","Window","WmClass","WmDeleteWindow","WmHints","WmName","WmNormalHints","WmProtocols","WmState","WmTakeFocus","WmTransientFor","XEmbed","XEmbedInfo","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","fmt","fmt","from","from","from_str","hash","into","into","into_iter","iter","len","next","next_back","nth","size_hint","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","type_id","type_id","ClientEventMask","ClientMessage","ClientMessage","ClientMessageData","ClientMessageKind","ConfigureEvent","ConfigureNotify","ConfigureRequest","DeleteWindow","Destroy","Enter","Expose","ExposeEvent","FocusIn","KeyPress","Leave","MapRequest","MappingNotify","MotionNotify","MouseEvent","NoEventMask","PointerChange","PropertyEvent","PropertyNotify","RandrNotify","ResizeRequest","ResizeRequestEvent","ScreenChange","StructureNotify","SubstructureNotify","TakeFocus","TakeSystrayOwnership","U16","U32","U8","UnmapNotify","XEmbedFocusIn","XEmbedModalityOn","XEmbedNotify","XEmbedWindowActivate","XEvent","abs","as_message","as_u16","as_u32","as_u8","as_usize","atom","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","data","dtype","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","height","id","id","id","id","id","id","into","into","into","into","into","into","into","into","into","into","is_root","is_root","mask","new","r","r","relative","same_screen","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","width","Atom","Bytes","Cardinal","CopyFromParent","ICON_MASK_HINT","ICON_PIXMAP_HINT","ICON_POSITION_HINT","ICON_WINDOW_HINT","INPUT_HINT","Iconic","InputOnly","InputOutput","MapState","Normal","P_ASPECT","P_BASE_SIZE","P_MAX_SIZE","P_MIN_SIZE","P_POSITION","P_RESIZE_INC","P_SIZE","P_WIN_GRAVITY","Prop","STATE_HINT","URGENCY_HINT","UTF8String","U_POSITION","U_SIZE","UnViewable","Unmapped","Viewable","WINDOW_GROUP_HINT","Window","WindowAttributes","WindowClass","Withdrawn","WmHints","WmHints","WmHintsFlags","WmNormalHints","WmNormalHints","WmNormalHintsFlags","WmState","all","all","apply_to","bitand","bitand","bitand_assign","bitand_assign","bitor","bitor","bitor_assign","bitor_assign","bits","bits","bits","bits","bitxor","bitxor","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","complement","complement","contains","contains","default","default","difference","difference","empty","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_retain","from_bits_truncate","from_bits_truncate","from_iter","from_iter","from_name","from_name","hash","hash","hash","hash","hash","hash","hash","hash","hash","insert","insert","intersection","intersection","intersects","intersects","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_all","is_all","is_empty","is_empty","iter","iter","iter_names","iter_names","new","new","new","not","not","remove","remove","set","set","sub","sub","sub_assign","sub_assign","symmetric_difference","symmetric_difference","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_bytes","try_from_bytes","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","AndQuery","AppName","ClassName","NotQuery","OrQuery","Query","StringProperty","Title","and","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","not","or","run","run","run","run","run","run","run","run","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id"],"q":[[0,"penrose"],[105,"penrose::Error"],[118,"penrose::builtin"],[121,"penrose::builtin::actions"],[130,"penrose::builtin::actions::floating"],[169,"penrose::builtin::hooks"],[188,"penrose::builtin::layout"],[275,"penrose::builtin::layout::messages"],[366,"penrose::builtin::layout::transformers"],[468,"penrose::core"],[532,"penrose::core::bindings"],[736,"penrose::core::hooks"],[802,"penrose::core::layout"],[849,"penrose::extensions"],[853,"penrose::extensions::actions"],[879,"penrose::extensions::hooks"],[891,"penrose::extensions::hooks::default_workspaces"],[905,"penrose::extensions::hooks::ewmh"],[911,"penrose::extensions::hooks::manage"],[963,"penrose::extensions::hooks::named_scratchpads"],[991,"penrose::extensions::hooks::startup"],[1006,"penrose::extensions::hooks::window_swallowing"],[1017,"penrose::extensions::layout"],[1072,"penrose::extensions::util"],[1096,"penrose::extensions::util::debug"],[1131,"penrose::extensions::util::dmenu"],[1201,"penrose::pure"],[1422,"penrose::pure::geometry"],[1506,"penrose::util"],[1512,"penrose::x"],[1625,"penrose::x11rb"],[1665,"penrose::x::atom"],[1752,"penrose::x::event"],[1960,"penrose::x::property"],[2208,"penrose::x::query"],[2299,"alloc::string"],[2300,"core::cmp"],[2301,"core::fmt"],[2302,"x11rb::errors"],[2303,"std::io::error"],[2304,"x11rb_protocol::errors"],[2305,"core::num::error"],[2306,"core::hash"],[2307,"core::option"],[2308,"core::error"],[2309,"core::result"],[2310,"core::any"],[2311,"alloc::boxed"],[2312,"penrose::core::layout::messages"],[2313,"core::ops::function"],[2314,"core::clone"],[2315,"alloc::vec"],[2316,"penrose::pure::stack"],[2317,"anymap::any"],[2318,"core::cell"],[2319,"alloc::sync"],[2320,"core::default"],[2321,"std::collections::hash::set"],[2322,"std::collections::hash::map"],[2323,"core::convert"],[2324,"penrose_keysyms"],[2325,"penrose::core::layout::transformers"],[2326,"alloc::borrow"],[2327,"penrose::extensions::layout::combinators"],[2328,"penrose::pure::stack_set"],[2329,"penrose::pure::workspace"],[2330,"core::iter::traits::iterator"],[2331,"penrose::pure::screen"],[2332,"core::iter::traits::collect"],[2333,"x11rb::connection"],[2334,"x11rb::rust_connection"],[2335,"bitflags::iter"],[2336,"penrose::extensions::actions::dynamic_select"]],"i":[12,0,12,26,0,12,12,12,12,12,12,12,12,12,26,12,12,0,12,12,12,12,12,12,12,12,12,12,0,1,1,6,12,1,6,12,1,0,6,1,6,1,6,0,0,6,6,6,1,0,6,6,12,12,1,6,6,12,12,12,12,12,12,12,12,1,1,1,1,6,1,0,6,12,1,0,0,1,6,0,1,1,1,1,0,12,0,6,1,6,12,6,12,1,1,1,6,12,1,6,12,1,0,0,0,184,185,186,187,188,188,189,190,187,191,192,187,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,41,40,41,40,41,40,41,40,41,40,41,0,0,40,41,40,41,40,41,40,41,40,41,0,0,0,0,40,41,0,40,41,40,41,40,41,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,50,51,52,53,50,51,52,53,50,50,52,53,50,51,52,53,50,51,50,51,50,51,52,53,50,51,52,53,50,51,53,50,51,52,53,50,51,52,53,50,51,52,53,51,51,50,51,52,53,50,51,52,53,0,50,51,52,53,50,51,50,50,50,50,51,52,53,50,0,50,51,52,53,50,51,52,53,50,51,52,53,51,51,0,0,0,0,0,0,0,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,56,57,58,59,60,61,62,0,0,0,0,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,65,63,64,65,66,63,64,65,66,65,66,63,64,65,66,63,64,65,66,63,64,65,66,65,66,63,64,65,66,63,64,65,65,66,66,63,63,64,64,65,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,63,64,65,66,0,0,0,0,0,0,35,68,0,69,69,35,68,69,35,68,35,69,69,69,69,69,35,35,69,69,69,35,35,69,69,35,68,69,69,69,35,68,0,69,35,68,0,69,69,35,68,69,69,35,35,68,69,68,69,69,35,68,69,35,68,69,35,68,87,84,87,84,84,84,0,0,0,0,0,0,84,86,87,86,0,0,0,0,0,0,0,0,0,0,84,84,89,89,84,84,86,86,86,87,84,84,84,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,82,82,29,0,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,87,85,43,42,86,84,85,86,87,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,82,85,86,87,82,89,90,43,42,90,85,84,85,86,87,88,82,89,90,43,42,88,87,0,43,88,82,85,82,42,82,43,42,88,88,88,39,39,0,87,90,88,43,84,85,86,87,88,82,89,90,43,42,84,84,85,86,86,87,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,84,85,86,87,88,82,89,90,43,42,90,0,0,0,0,0,0,0,0,98,99,100,101,98,99,100,101,70,72,73,71,70,72,73,98,99,100,98,99,100,101,98,99,100,101,98,99,100,101,70,72,73,71,70,72,73,71,71,101,71,101,71,101,71,101,98,99,100,101,98,99,100,101,98,99,100,101,0,0,0,0,0,54,54,49,49,102,102,102,54,54,54,49,102,102,103,54,31,31,49,102,49,102,49,102,49,102,103,103,102,103,103,103,103,103,103,103,103,103,54,54,54,103,103,0,0,0,0,105,0,105,105,105,105,105,105,105,0,0,0,105,105,0,105,105,0,105,0,0,105,0,105,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,110,110,110,110,110,110,110,110,110,110,110,110,110,0,0,0,0,0,0,0,0,0,0,0,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,113,114,111,112,113,114,115,111,112,113,114,115,111,112,113,114,115,0,0,0,0,116,117,116,117,117,117,117,117,0,116,117,116,117,116,117,0,116,117,116,117,116,117,116,117,0,120,120,120,120,120,120,120,120,120,120,120,120,120,120,0,121,121,121,121,121,121,121,121,121,121,0,0,0,122,123,124,122,123,124,122,123,124,122,123,124,123,124,123,124,123,124,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,122,123,124,123,124,122,123,124,122,123,124,122,123,124,125,125,125,0,125,125,125,125,125,0,0,125,125,125,125,125,0,0,125,125,125,125,125,0,0,0,127,128,127,128,127,127,128,127,128,127,128,128,127,128,128,128,128,127,128,127,128,128,128,128,0,127,128,127,128,127,128,127,128,0,0,0,130,0,130,131,131,130,107,130,131,107,129,130,131,107,129,129,130,131,107,129,130,131,107,129,107,107,107,131,107,130,131,107,129,130,131,107,129,107,130,131,107,129,107,107,129,107,129,107,107,107,130,131,107,129,130,131,107,129,130,131,107,129,130,131,107,129,107,126,140,140,126,140,140,126,0,0,126,0,0,0,140,0,132,132,139,140,55,132,136,126,139,140,55,132,136,126,55,136,132,136,139,140,55,132,136,126,139,140,55,132,136,126,55,132,136,132,132,132,132,132,132,132,139,140,55,132,136,132,132,140,55,126,55,55,55,132,139,139,140,55,55,132,136,136,126,136,132,55,132,55,55,55,132,132,132,132,132,55,132,55,139,140,55,132,136,126,55,0,139,55,136,132,55,132,132,132,136,139,55,132,55,132,139,140,55,132,136,126,55,55,55,55,136,132,55,55,132,55,136,55,55,132,132,132,132,132,132,55,136,132,136,132,132,132,132,132,132,132,136,132,132,55,132,55,132,55,55,132,55,132,55,132,55,132,132,132,136,132,136,132,55,132,55,132,55,132,136,132,132,132,139,140,55,132,136,126,139,55,136,132,132,139,140,55,132,136,126,55,139,140,55,132,136,126,132,139,140,55,132,136,126,55,132,132,139,132,132,132,0,0,0,0,143,143,46,46,144,143,46,144,143,46,46,144,143,46,144,143,46,46,46,46,144,143,46,144,143,46,144,143,46,144,144,144,144,144,143,46,46,143,46,144,46,144,143,46,46,46,144,143,46,145,143,46,46,46,46,46,46,46,46,46,46,46,46,144,143,46,144,143,46,144,143,46,144,143,46,46,144,46,144,46,0,0,0,0,0,0,0,151,150,149,0,0,151,151,149,149,150,0,0,151,150,150,150,150,0,0,0,0,0,147,0,34,149,150,151,149,150,151,34,147,147,149,150,151,149,150,151,34,34,149,150,151,0,34,34,149,150,151,34,149,150,151,34,34,34,34,149,150,151,147,34,149,150,151,34,147,34,147,34,147,34,147,147,0,0,147,147,147,147,147,34,34,34,147,34,147,34,147,34,34,149,150,151,149,150,151,149,150,151,149,150,151,147,34,34,147,147,147,147,0,0,155,155,155,155,155,0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,0,0,158,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,159,158,159,158,159,158,159,158,158,159,158,159,158,158,158,159,159,158,159,159,159,159,159,158,159,158,158,159,158,159,158,159,0,0,74,0,0,0,74,74,160,74,74,74,0,74,74,74,74,74,74,74,162,0,0,74,74,74,0,74,162,162,160,160,161,161,161,74,160,160,160,160,0,165,160,161,161,161,161,166,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,164,154,154,74,160,162,161,154,163,164,165,166,167,74,74,160,162,161,154,163,164,165,166,167,74,160,162,161,161,161,161,161,161,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,167,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,163,166,154,154,163,164,165,165,74,160,162,161,154,163,164,165,166,167,74,74,160,162,161,161,161,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,74,160,162,161,154,163,164,165,166,167,167,148,148,148,173,169,169,169,169,169,153,173,173,0,153,170,170,170,170,170,170,170,170,0,169,169,148,170,170,172,172,172,169,148,0,0,153,0,148,0,0,148,0,0,169,170,171,169,170,169,170,169,170,169,170,169,169,170,170,169,170,169,170,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,148,169,169,169,169,169,170,170,170,170,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,169,169,170,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,169,170,169,170,169,170,169,170,174,171,152,169,170,169,170,169,170,169,170,169,170,169,170,148,169,170,153,172,173,174,171,152,169,170,148,169,170,153,172,173,174,171,152,174,171,148,169,170,153,172,173,174,171,152,148,169,170,153,172,173,174,171,152,169,170,0,0,0,0,0,0,0,0,119,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,178,179,180,181,178,179,180,181,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,177,182,183,119,119,119,178,179,180,181,177,182,183,178,179,180,181,178,179,180,181,177,182,183,178,179,180,181,177,182,183,178,179,180,181,177,182,183],"f":"`````````````````````````````{{{d{b}}}f}{{{d{b}}}h}{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00`{{{d{l}}}l}{{{d{b}}}b}{{{d{c}}{d{je}}}n{}{}}0{{{d{l}}{d{l}}}A`}``{{}l}{{{d{l}}}{{d{c}}}{}}{{{d{l}}{d{l}}}Ab}{{{d{b}}{d{b}}}Ab}`{{{d{l}}{d{jAd}}}Af}0{{{d{Ah}}{d{jAd}}}Af}0{{{d{b}}{d{jAd}}}Af}{fl}{cc{}}{AjAh}1{AlAh}{AnAh}{B`Ah}{BbAh}{BdAh}{BfAh}{{{Bj{BhBhBhBh}}}b}{{{Bj{BhBhBh}}}b}{fb}:{{{d{l}}{d{jc}}}nBl}{{{d{b}}{d{jc}}}nBl}`{ce{}{}}00``3{{{d{l}}{d{l}}}{{Bn{A`}}}}`{{{d{b}}}{{Bj{BhBhBh}}}}{{{d{b}}}f}{{{d{b}}}{{Bj{BhBhBhBh}}}}1`{{{d{Ah}}}{{Bn{{d{C`}}}}}}`{{{d{c}}}e{}{}}0{{{d{c}}}h{}}0{c{{Cb{e}}}{}{}}00{h{{Cd{b}}}}{{{d{Cf}}}{{Cd{b}}}}222{{{d{c}}}Ch{}}00```````````````````{e{{Cl{Cj}}}Cn{{Db{}{{D`{c}}}}}}{{}{{Cl{Cj}}}}`{e{{Cl{Cj}}}Dd{{Dh{{d{j{Df{c}}}}{d{c}}}{{D`{{Cd{n}}}}}}}}1{c{{Cl{Cj}}}{{Dh{{d{jDj}}}}Dl}}23{{{d{Cf}}}{{Cl{Cj}}}}``{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{}{{Cl{Dn}}}}0{{{d{E`}}}E`}{{{d{Eb}}}Eb}{{{d{c}}{d{je}}}n{}{}}0{{}E`}{{}Eb};;{{{d{E`}}{d{jAd}}}Af}{{{d{Eb}}{d{jAd}}}Af}{cc{}}0{ce{}{}}0{{{d{jE`}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jEb}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jE`}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jEb}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{EhEh}{{Cl{Cj}}}}0{{}{{Cl{Cj}}}}0{{{d{c}}}e{}{}}01{c{{Cb{e}}}{}{}}000{{{d{c}}}Ch{}}0`{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}`{{{d{Ej}}}Ej}{{{d{c}}{d{je}}}n{}{}}{{}Ej}{{{d{Ej}}{d{jAd}}}Af}{cc{}}`{ce{}{}}`:`{{{d{jEj}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jEj}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd};;:````99998888{{fF`F`}{{Cl{Fb}}}}{{fF`F`Ab}Fd}{{}{{Cl{Fb}}}}0{{{d{Fd}}}{{Cl{Fb}}}}{{{d{Ff}}}{{Cl{Fb}}}}{{{d{Fh}}}{{Cl{Fb}}}}{{{d{Fj}}}{{Cl{Fb}}}}4444{{{d{Fd}}}Fd}{{{d{Ff}}}Ff}{{{d{Fh}}}Fh}{{{d{Fj}}}Fj}{{{d{c}}{d{je}}}n{}{}}000{{}Fd}{{}Ff}{{}Fj}{{{d{Fd}}{d{jAd}}}Af}{{{d{Ff}}{d{jAd}}}Af}{{{d{Fh}}{d{jAd}}}Af}{{{d{Fj}}{d{jAd}}}Af}{cc{}}000{{{d{jFd}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFf}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFh}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jFj}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{fF`F`}{{Cl{Fb}}}}{{fF`F`}Ff}{ce{}{}}000{{{d{jFd}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFf}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFh}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFj}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}`{{{d{Fd}}}h}{{{d{Ff}}}h}{{{d{Fh}}}h}{{{d{Fj}}}h}{{{d{jFd}}}n}{{{d{jFf}}}n}<<{{fF`F`Ab}Fd}{{{d{c}}}e{}{}}000>`{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{fF`F`}{{Cl{Fb}}}}{{fF`F`}Ff}```````{{{d{c}}}{{d{e}}}{}{}}000000{{{d{jc}}}{{d{je}}}{}{}}000000{{{d{G`}}}G`}{{{d{Gb}}}Gb}{{{d{Gd}}}Gd}{{{d{Gf}}}Gf}{{{d{Gh}}}Gh}{{{d{Gj}}}Gj}{{{d{Gl}}}Gl}{{{d{c}}{d{je}}}n{}{}}000000{{{d{G`}}{d{G`}}}Ab}{{{d{Gb}}{d{Gb}}}Ab}{{{d{Gd}}{d{Gd}}}Ab}{{{d{Gf}}{d{Gf}}}Ab}{{{d{Gh}}{d{Gh}}}Ab}{{{d{Gj}}{d{Gj}}}Ab}{{{d{Gl}}{d{Gl}}}Ab}{{{d{G`}}{d{jAd}}}Af}{{{d{Gb}}{d{jAd}}}Af}{{{d{Gd}}{d{jAd}}}Af}{{{d{Gf}}{d{jAd}}}Af}{{{d{Gh}}{d{jAd}}}Af}{{{d{Gj}}{d{jAd}}}Af}{{{d{Gl}}{d{jAd}}}Af}{cc{}}000000{ce{}{}}000000{{{d{c}}}e{}{}}000000{c{{Cb{e}}}{}{}}0000000000000{{{d{c}}}Ch{}}000000````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{c}}}{{Cl{Fb}}}{}}000{{{d{Gn}}}Gn}{{{d{H`}}}H`}{{{d{Hb}}}Hb}{{{d{Hd}}}Hd}{{{d{c}}{d{je}}}n{}{}}000{{{d{Gn}}{d{jAd}}}Af}{{{d{H`}}{d{jAd}}}Af}{{{d{Hb}}{d{jAd}}}Af}{{{d{Hd}}{d{jAd}}}Af}{cc{}}000{{{d{jc}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}{}}000{{{d{jGn}}}{{d{j{Cl{Fb}}}}}}{{{d{jH`}}}{{d{j{Cl{Fb}}}}}}{{{d{jHb}}}{{d{j{Cl{Fb}}}}}}{{{d{jHd}}}{{d{j{Cl{Fb}}}}}}`{ce{}{}}000{{{d{jc}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000``{{{d{jc}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000{{{d{jc}}{d{Cf}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{}}000{{{d{c}}}h{}}000``{{{d{c}}}e{}{}}000{{{d{jc}}El{d{{Df{e}}}}{d{e}}}El{}{}}00{{{d{Hb}}El}El}1{{{d{Hd}}El}El}{{{d{jc}}El{En{{Bj{lEl}}}}{d{{Df{e}}}}{d{e}}}{{En{{Bj{lEl}}}}}{}{}}{{{d{jGn}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}{{{d{jH`}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}2{{{d{jHb}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}33{{{d{Gn}}}h}{{{d{H`}}}h}{{{d{Hb}}}h}{{{d{Hd}}}h}{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{{Cl{Fb}}}{{Cl{Fb}}}}0{{{Cl{Fb}}ff}{{Cl{Fb}}}}{{{Cl{Fb}}f}{{Cl{Fb}}}}``````{{{d{j{Df{c}}}}e}nDdHf}{{{d{j{Hh{c}}}}e}nDdHf}``{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00`{{{d{j{Hj{c}}}}e}nDd{{Hl{c}}}}{{{d{j{Hj{c}}}}e}nDd{{Hn{c}}}}{{{d{j{Hj{c}}}}e}nDd{{I`{c}}}}{{{d{j{Hj{c}}}}e}nDd{{Ib{c}}}}0`{{{d{{Df{c}}}}}{{Bn{{d{Id}}}}}Dd}{{}{{Hj{c}}}Dd}``{{{d{{Df{c}}}}}{{Cd{{Ih{{If{e}}}}}}}DdHf}{{{d{j{Df{c}}}}}{{Ih{{If{e}}}}}Dd{IjHf}}`{{{d{{Hj{c}}}}{d{jAd}}}AfDd}{{{d{{Df{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Hh{c}}}}{d{jAd}}}Af{DdIl}}``{cc{}}00`{ce{}{}}00```{{{d{{Df{c}}}}}{{d{{In{l}}}}}Dd}{{{Hj{c}}{J`{c}}{Jb{c}}c}{{Cd{{Hh{c}}}}}Dd}``{{{d{j{Df{c}}}}}{{Bn{e}}}DdHf}{{{d{{Df{c}}}}}lDd}{{{Hh{c}}}{{Cd{n}}}Dd}```{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00```````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{jc}}}{{d{je}}}{}{}}000000000{{{d{Jd}}}Jf}`{{{d{jCj}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{Cl{Cj}}}{{Cl{Dn}}}}{{{d{Jh}}}Jh}{{{d{Jj}}}Jj}{{{d{Jl}}}Jl}{{{d{Jn}}}Jn}{{{d{K`}}}K`}{{{d{Jd}}}Jd}{{{d{Kb}}}Kb}{{{d{Kd}}}Kd}{{{d{Ef}}}Ef}{{{d{Ed}}}Ed}{{{d{c}}{d{je}}}n{}{}}000000000{{{d{Jn}}{d{Jn}}}A`}```{{}Jl}{{{d{Jh}}{d{Jh}}}Ab}{{{d{Jj}}{d{Jj}}}Ab}{{{d{Jl}}{d{Jl}}}Ab}{{{d{Jn}}{d{Jn}}}Ab}{{{d{Jd}}{d{Jd}}}Ab}{{{d{Kb}}{d{Kb}}}Ab}{{{d{Kd}}{d{Kd}}}Ab}{{{d{Ef}}{d{Ef}}}Ab}{{{d{Ed}}{d{Ed}}}Ab}{{{d{Jh}}{d{jAd}}}Af}{{{d{Jj}}{d{jAd}}}Af}{{{d{Jl}}{d{jAd}}}Af}{{{d{Jn}}{d{jAd}}}Af}{{{d{K`}}{d{jAd}}}Af}{{{d{Jd}}{d{jAd}}}Af}{{{d{Kb}}{d{jAd}}}Af}{{{d{Kd}}{d{jAd}}}Af}{{{d{Ef}}{d{jAd}}}Af}{{{d{Ed}}{d{jAd}}}Af}{cc{}}000000000{{JfKf}{{Cd{Jd}}}}{{{d{Jj}}{d{jc}}}nBl}{{{d{Jl}}{d{jc}}}nBl}{{{d{Jn}}{d{jc}}}nBl}{{{d{Jd}}{d{jc}}}nBl}{{{d{Kb}}{d{jc}}}nBl}{{{d{Kd}}{d{jc}}}nBl}{{{d{Ef}}{d{jc}}}nBl}{{{d{Ed}}{d{jc}}}nBl}`{{{d{Jj}}Kh}Jj}{ce{}{}}0000000000{{}K`}{{}{{Cd{{Kj{hJf}}}}}}`{{{d{K`}}}Kl}{{{d{Jd}}}Kf}```{{Jl{En{Jn}}}Jd}{{lKnKnKnKnJdKb}Ef}{{lKnKnKnKn{En{Jn}}}Ed}{{{d{jK`}}}{{Bn{c}}}{}}0{{{d{jK`}}Kl}{{Bn{c}}}{}}{{{d{jDn}}{d{Ed}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jDn}}{d{Ef}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{Kj{c{Cl{Cj}}}}}{{Cd{{J`{e}}}}}{{L`{Cf}}}Dd}{{{d{Jn}}{d{Jn}}}{{Bn{A`}}}}`{{{d{K`}}}{{Bj{Kl{Bn{Kl}}}}}}`{{{d{c}}}e{}{}}000000000{Lb{{Cb{Jhc}}}{}}{c{{Cb{e}}}{}{}}0{Jf{{Cd{Jl}}}}1{{{d{Cf}}}{{Cb{Jnc}}}{}}22222222222222222{{{d{c}}}Ch{}}000000000`````````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{Hl{{Cl{Hl}}}}{I`{{Cl{I`}}}}{Ib{{Cl{Ib}}}}{Hn{{Cl{Hn}}}}{{{d{jHl}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cd{Ab}}}Dd}{{{d{jI`}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jIb}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{j{Ld{c}}}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cd{Ab}}}Dd}{{{d{j{Lf{c}}}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{j{Lh{c}}}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{{Ld{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lf{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lh{c}}}}{d{jAd}}}Af{DdIl}}{{{d{{Lj{c}}}}{d{jAd}}}Af{DdIl}}{cc{}}000{ce{}{}}000{{Hle}{{Ld{c}}}Dd{{Hl{c}}}}{{I`e}{{Lf{c}}}Dd{{I`{c}}}}{{Ibe}{{Lh{c}}}Dd{{Ib{c}}}}{{Hne}{{Lj{c}}}Dd{{Hn{c}}}}{{Hl{Cl{Hl}}}{{Cl{Hl}}}}{{I`{Cl{I`}}}{{Cl{I`}}}}{{Ib{Cl{Ib}}}{{Cl{Ib}}}}{{Hn{Cl{Hn}}}{{Cl{Hn}}}}{{{d{jHn}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{j{Lj{c}}}}El{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jHn}}KlEl{d{{Df{c}}}}{d{c}}}ElDd}{{{d{j{Lj{c}}}}KlEl{d{{Df{c}}}}{d{c}}}ElDd}{{{d{jHn}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{j{Lj{c}}}}El{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{jHn}}KlEl{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{{{d{j{Lj{c}}}}KlEl{En{{Bj{lEl}}}}{d{{Df{c}}}}{d{c}}}{{En{{Bj{lEl}}}}}Dd}{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000`````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{Fb{{Cl{Fb}}}}{{{d{Fb}}}{{Cl{Fb}}}}{{{d{Ll}}}{{Cl{Fb}}}}{{{d{jLl}}c}nCn}{{}Ll}{{{d{Fl}}}{{Bn{{d{c}}}}}{}}{{{d{Fl}}{d{jAd}}}Af}{cc{}}{{{d{jFb}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}5{{{d{jLl}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jLn}}}{{d{j{Cl{Fb}}}}}}{ce{}{}}{CnFl}0{{{d{jFb}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFb}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jFb}}{d{Cf}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jLl}}{d{Cf}}{d{{Bn{{Fn{l}}}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{Fb}}}h}{{{d{Ll}}}h}{{{d{jLn}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}0{{{d{jLl}}c}{{En{{Bj{lEl}}}}}{{M`{{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}{{{d{jLn}}cEl}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}{{M`{El{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}0{{{d{jLn}}{Cl{Fb}}}{{Cl{Fb}}}}0{{{d{Ln}}El}El}0{{{d{jLn}}El{En{{Bj{lEl}}}}}{{En{{Bj{lEl}}}}}}0{{{d{Ln}}}h}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}{{{d{jLn}}}{{Cl{Fb}}}}0````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Mb}}}Mb}{{{d{c}}{d{je}}}n{}{}}{{{d{Mb}}{d{Mb}}}A`}{{{Md{}{{D`{{Bn{h}}}}}}Ll}{{Cl{Cj}}}}{Mf{{Cl{Cj}}}}0{{{d{Mb}}{d{Mb}}}Ab}{{{d{Mb}}{d{jAd}}}Af}{{{d{Cf}}{d{Cf}}}{{Cl{Cj}}}}{cc{}}{ce{}{}}5{{{d{Mb}}{d{Mb}}}{{Bn{A`}}}}{{lMb{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{Md{{d{{Mh{h}}}}}{{D`{{Bn{h}}}}}}}{{Cl{Cj}}}}{{{d{c}}}e{}{}}{{}{{Cl{Cj}}}}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}`````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{ce{En{g}}}{{Cl{Ib}}}{{Mj{h}}}{{Mj{h}}}{{Mj{h}}}}{{{d{jMl}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{Ml}}}Ml}{{{d{c}}{d{je}}}n{}{}}{{{d{Ml}}{d{jAd}}}Af}?>:887``{{{Hj{c}}}{{Hj{c}}}Dd}{{{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cd{Ab}}}Dd}{{{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}0`````9999988888{{{d{jMn}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jN`}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jNb}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jNd}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{jNf}}l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{Mn}}{d{jAd}}}Af}{{{d{N`}}{d{jAd}}}Af}{{{d{Nb}}{d{jAd}}}Af}{{{d{Nd}}{d{jAd}}}Af}{{{d{Nf}}{d{jAd}}}Af}{cc{}}0000{ce{}{}}0000{{BhBh}Nb}{{BhBhBhBh}Nd}{c{{Cb{e}}}{}{}}000000000{{{d{c}}}Ch{}}0000```{{{Hh{c}}{En{{Nh{c}}}}}{{Hh{c}}}Dd}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{{d{jNj}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{Nj}}}Nj}{{{d{c}}{d{je}}}n{}{}}{{{d{Nj}}{d{Nj}}}Ab}{{{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cd{Ab}}}Dd}{{{d{{Nh{c}}}}{d{jAd}}}AfDd}{{{d{Nj}}{d{jAd}}}Af}??>>{{l{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{ceikAb}{{Bj{{Nh{g}}Nj}}}{{Mj{{Nl{Cf}}}}}{{Mj{{Nl{Cf}}}}}Dd{{Nn{g}}}{{I`{g}}}}{{{d{c}}}e{}{}}>>>>==`;:{c{{Cl{Ib}}}{{Mj{{Nl{Cf}}}}}}{{{d{jO`}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{O`}}}O`}:{{{d{O`}}{d{O`}}}Ab}{{{d{O`}}{d{jAd}}}Af}{cc{}}{ce{}{}}7{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}`{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{e{{Cl{Hl}}}Dd{{Nn{c}}}}{{{d{j{Ob{c}}}}{d{Id}}{d{j{Df{c}}}}{d{c}}}{{Cd{Ab}}}Dd}{{{d{{Ob{c}}}}{d{jAd}}}Af{IlDd}}87665```444333{{ceg{Md{{d{{Fn{l}}}}El}{{D`{Ab}}}}}{{Cl{Fb}}}{{Mj{h}}}FbFb}{{fF`F`}{{Cl{Fb}}}}{{F`F`}{{Cl{Fb}}}}{{{d{Od}}}{{Cl{Fb}}}}{{{d{Of}}}{{Cl{Fb}}}}{{{d{Oh}}}{{Cl{Fb}}}}{{}{{Cl{Fb}}}}0{{{d{Of}}}Of}{{{d{Oh}}}Oh}{{{d{c}}{d{je}}}n{}{}}0{{}Of}{{}Oh}{{{d{Od}}{d{jAd}}}Af}{{{d{Of}}{d{jAd}}}Af}{{{d{Oh}}{d{jAd}}}Af}{cc{}}00{{{d{jOd}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jOf}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{{{d{jOh}}{d{Fl}}}{{Bn{{Cl{Fb}}}}}}{ce{}{}}00{{{d{jOd}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jOf}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{jOh}}{d{{Fn{l}}}}El}{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}{{{d{Od}}}h}{{{d{Of}}}h}{{{d{Oh}}}h}{{ceg{Md{{d{{Fn{l}}}}El}{{D`{Ab}}}}}Od{{Mj{h}}}FbFb}{{fF`F`}Of}{{F`F`}Oh}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Oj}}}Oj}{{{d{c}}{d{je}}}n{}{}}{{{d{Oj}}{d{Oj}}}A`}``{{{d{Oj}}{d{Oj}}}Ab}{{{d{Oj}}{d{jAd}}}Af}{cc{}}{{{d{Oj}}{d{jc}}}nBl}{ce{}{}}{{ce}{{Cd{n}}}{{L`{Cf}}}{{L`{Cf}}}}{{ceOjKl}{{Cd{n}}}{{L`{Cf}}}{{L`{Cf}}}}{{{d{Oj}}{d{Oj}}}{{Bn{A`}}}}?>>={{{d{Cf}}{d{Cf}}Ol}{{Cd{n}}}}``==<<{{{d{jOn}}{d{j{Df{c}}}}{d{c}}}{{Cd{n}}}Dd}{{{d{On}}}On}{{{d{A@`}}}A@`}=={{}On}{{}A@`}{{{d{A@`}}{d{A@`}}}Ab}{{{d{On}}{d{jAd}}}Af}{{{d{A@`}}{d{jAd}}}Af}```>><<```{{{d{{Df{c}}}}{d{A@`}}}hDd}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}000{{{d{c}}}Ch{}}0``````````{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{A@b}}{En{c}}}{{Cd{A@d}}}{{Mj{h}}}}{{{d{A@d}}}A@d}{{{d{A@f}}}A@f}{{{d{Mf}}}Mf}{{{d{A@b}}}A@b}{{{d{c}}{d{je}}}n{}{}}000``{{}Mf}{{{d{A@f}}{d{A@f}}}Ab}`{{{d{A@d}}{d{jAd}}}Af}{{{d{A@f}}{d{jAd}}}Af}{{{d{Mf}}{d{jAd}}}Af}{{{d{A@b}}{d{jAd}}}Af}{cc{}}000`{ce{}{}}000``{{{d{Mf}}Kl}A@b}`{{{d{A@b}}}{{Cd{n}}}}```{{{d{c}}}e{}{}}000{c{{Cb{e}}}{}{}}0000000{{{d{c}}}Ch{}}000{{{d{Cf}}}Mf}```````````````{{{d{j{A@h{c}}}}e}{{Cd{n}}}{DlA@jA@lA@n}{{Mj{h}}}}{{{d{j{A@h{c}}}}eLl}{{Cd{n}}}{DlA@jA@lA@n}{{Mj{h}}}}{{{d{c}}}{{d{e}}}{}{}}00000{{{d{jc}}}{{d{je}}}{}{}}00000{{{d{j{Fn{{Cl{Fb}}}}}}c}nCn}{{{d{j{AA`{c}}}}e}n{}Cn}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}{{{d{{AA`{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{}}{{{d{{AAf{c}}}}}{{AAf{c}}}Dl}{{{d{AAh}}}AAh}{{{d{{Fn{c}}}}}{{Fn{c}}}Dl}{{{d{{A@h{c}}}}}{{A@h{c}}}{DlA@jA@lA@nDl}}{{{d{{AA`{c}}}}}{{AA`{c}}}Dl}{{{d{Ol}}}Ol}{{{d{c}}{d{je}}}n{}{}}00000{{{d{{Fn{c}}}}{d{c}}}AbA@j}{{{d{{A@h{c}}}}{d{c}}}Ab{DlA@jA@lA@n}}{{{d{{AA`{c}}}}{d{c}}}AbA@j}{{{d{{A@h{c}}}}{d{Cf}}}Ab{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{Bn{{d{c}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{{AAf{c}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{Bn{{d{{Fn{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{Cf}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{d{{AA`{c}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{d{j{AA`{c}}}}}{DlA@jA@lA@n}}{{}{{AAf{c}}}Ij}{{}AAh}{{}{{Fn{c}}}Ij}{{}{{A@h{c}}}{DlA@jA@lA@nIj}}{{}{{AA`{c}}}{}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}0{{{d{AAh}}{d{AAh}}}Ab}{{{d{{Fn{c}}}}{d{{Fn{c}}}}}AbA@j}{{{d{Ol}}{d{Ol}}}Ab}{{{d{{Fn{c}}}}e}{{Bj{{Bn{{Fn{c}}}}{En{c}}}}}Dl{{Db{{d{c}}}{{D`{Ab}}}}}}{{{Fn{c}}e}{{Bn{{Fn{c}}}}}{}{{Db{{d{c}}}{{D`{Ab}}}}}}{{{Fn{c}}}{{En{c}}}{}}{{{d{j{A@h{l}}}}lEl}{{Cd{n}}}}{{{d{{AAf{c}}}}{d{jAd}}}AfIl}{{{d{{AAf{c}}}}{d{jAd}}}AfAAj}{{{d{AAh}}{d{jAd}}}Af}{{{d{{Fn{c}}}}{d{jAd}}}AfAAj}{{{d{{Fn{c}}}}{d{jAd}}}AfIl}{{{d{{A@h{c}}}}{d{jAd}}}Af{DlA@jA@lA@nIl}}{{{d{{AA`{c}}}}{d{jAd}}}AfAAj}{{{d{{AA`{c}}}}{d{jAd}}}AfIl}{{{d{Ol}}{d{jAd}}}Af}{{{d{{AA`{c}}}}}{{Bn{{d{c}}}}}{}}{{{d{j{A@h{c}}}}{d{c}}}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}{d{c}}}nA@j}{{{d{j{Fn{c}}}}e}n{}{{Db{{d{c}}}{{D`{Ab}}}}}}3222{{{d{j{A@h{c}}}}Kl}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cf}}}}54{{{d{{Fn{c}}}}}{{d{c}}}{}}{cc{}}00000{{{d{{Fn{c}}}}e}{{Bn{{Fn{c}}}}}Dl{{Db{{d{c}}}{{D`{Ab}}}}}}`{{{d{{AAf{c}}}}}El{}}{{{d{j{Fn{{Cl{Fb}}}}}}c}nCn}{{{d{j{AA`{c}}}}e}n{}Cn}{{{d{{A@h{c}}}}e}Ab{DlA@jA@lA@n}{{L`{Cf}}}}6{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{{AA`{c}}}}}Kl{}}{{{d{{AAf{c}}}}}Kl{}}{{{d{j{Fn{c}}}}c}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}c}n{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}AAhc}{{d{j{Fn{c}}}}}{}}{{{d{j{A@h{c}}}}AAhc}n{DlA@jA@lA@n}}{ce{}{}}00000{{{d{{Fn{c}}}}}{{`{c}}}{}}{{{d{j{Fn{c}}}}}{{`{c}}}{}}{{{Fn{c}}}{{`{c}}}{}}{{{d{{Fn{c}}}}}Ab{}}{{{d{{AA`{c}}}}}Ab{}}{{{d{{A@h{c}}}}{d{c}}}Ab{DlA@jA@lA@n}}54{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{{{d{{Fn{c}}}}}{{d{c}}}{}}{{{d{{AA`{c}}}}}h{}}{{{d{{Fn{c}}}}}Kl{}}{{{Fn{c}}g}{{Fn{e}}}{}{}{{Db{c}{{D`{e}}}}}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{M`{{Bn{{Fn{c}}}}}{{D`{{Bn{{Fn{c}}}}}}}}}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{M`{{Fn{c}}}{{D`{{Fn{c}}}}}}}}{{{d{j{A@h{c}}}}{d{c}}}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}{d{c}}e}n{DlA@jA@lA@n}{{L`{Cf}}}}{{{d{j{A@h{c}}}}Kl}n{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cf}}}}{{ecg}{{Fn{c}}}{}{{AAl{}{{AAb{c}}}}}{{AAl{}{{AAb{c}}}}}}{{KlcLl{Bn{{Fn{e}}}}}{{AA`{e}}}{{Mj{h}}}{}}<{{{d{j{AA`{c}}}}}n{}}={{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{DlA@jA@lA@n}}1{{{d{{A@h{c}}}}}{{En{h}}}{DlA@jA@lA@n}}2{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}407{{{Fn{c}}{d{c}}}{{Bj{{Bn{c}}{Bn{{Fn{c}}}}}}}A@j}{{{d{j{A@h{c}}}}{d{c}}}{{Bn{c}}}{DlA@jA@lA@n}}{{{Fn{c}}}{{Bj{c{Bn{{Fn{c}}}}}}}{}}{{{d{j{A@h{c}}}}}{{Bn{c}}}{DlA@jA@lA@n}}{{{d{j{Fn{c}}}}}{{d{j{Fn{c}}}}}{}}050505{{{d{j{Fn{{Cl{Fb}}}}}}c}{{En{{Bj{lEl}}}}}{{M`{{d{j{Cl{Fb}}}}}{{D`{{Bj{{Bn{{Cl{Fb}}}}{En{{Bj{lEl}}}}}}}}}}}}{{{d{{A@h{c}}}}{d{c}}}{{Bn{{d{{AAf{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AAf{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AAf{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{AA`{c}}}}Ll}Ll{}}{{{d{j{A@h{c}}}}e}n{DlA@jA@lA@n}{{L`{Cf}}}}{{{d{j{AA`{c}}}}{d{Cf}}}n{}}{{{d{j{A@h{c}}}}{d{c}}}{{Bn{El}}}{DlA@jA@lA@n}}8=8=8={{{d{{AA`{c}}}}}{{d{Cf}}}{}}{{{d{{A@h{c}}}}{d{c}}}{{Bn{{d{Cf}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}Kl}{{Bn{{d{Cf}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}Kl}{{Bn{h}}}{DlA@jA@lA@n}}{{{d{c}}}e{}{}}00000{{{d{c}}}h{}}00{{{d{j{A@h{l}}}}lEl}{{Cd{{Bn{El}}}}}}{{{d{j{A@h{c}}}}}n{DlA@jA@lA@n}}{c{{Cb{e}}}{}{}}00000{e{{Bn{{Fn{c}}}}}{}{{AAl{}{{AAb{c}}}}}}111111{{Lleg}{{Cd{{A@h{i}}}}}{{Mj{h}}}{{AAl{}{{AAb{c}}}}}{{AAl{}{{AAb{El}}}}}{DlA@jA@lA@n}}{{{d{c}}}Ch{}}00000{{{d{{Fn{c}}}}}{{`{{AAd{}{{AAb{{d{c}}}}}}}}}{}}{{{d{{A@h{c}}}}eg}e{DlA@jA@lA@n}{}{{Db{{d{{Fn{c}}}}}{{D`{e}}}}}}{{{d{{A@h{c}}}}{d{Cf}}}{{Bn{{d{{AA`{c}}}}}}}{DlA@jA@lA@n}}`{{{d{j{A@h{c}}}}{d{Cf}}}{{Bn{{d{j{AA`{c}}}}}}}{DlA@jA@lA@n}}{{{d{{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}{{{d{j{A@h{c}}}}}{{`{{AAd{}{{AAb{{d{j{AA`{c}}}}}}}}}}}{DlA@jA@lA@n}}````{{{d{AAn}}{d{El}}}El}{{AAn{d{El}}c}AAn{{Db{El}{{D`{El}}}}}}{{{d{El}}f}{{En{El}}}}0{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{El}}{d{El}}}{{Bn{El}}}}{{{d{AB`}}}AB`}{{{d{AAn}}}AAn}{{{d{El}}}El}{{{d{c}}{d{je}}}n{}{}}00{{{d{El}}{d{El}}}Ab}{{{d{El}}c}Ab{{Mj{AB`}}}}{{{d{El}}}{{Bj{AB`AB`AB`AB`}}}}{{}AB`}{{}AAn}{{}El}{{{d{AB`}}{d{AB`}}}Ab}{{{d{AAn}}{d{AAn}}}Ab}7{{{d{AB`}}{d{jAd}}}Af}{{{d{AAn}}{d{jAd}}}Af}{{{d{El}}{d{jAd}}}Af}{cc{}}{ElAB`}{{{d{El}}}AB`}{{{Bj{{d{f}}{d{f}}}}}AB`}{{{Bj{ff}}}AB`}4{{{Bj{AB`AB`}}}El}5<`{{{d{AB`}}{d{jc}}}nBl}{{{d{El}}{d{jc}}}nBl}{ce{}{}}00{{{d{El}}{d{El}}}Ab}7{{ff}AB`}{{BhBhBhBh}AAn}{{ffff}El}{{{d{ABb}}{d{El}}}AAn}{{{d{AAn}}{d{El}}}AAn}{{{d{El}}{d{El}}}AAn}{{{d{jEl}}EhEh}n}0{{{d{El}}Bh}El}0{{{d{El}}f}El}{{{d{El}}f}{{Bn{{Bj{ElEl}}}}}}{{{d{El}}F`}{{Bn{{Bj{ElEl}}}}}}{{{d{El}}}{{Bj{ElEl}}}}021{{{d{c}}}e{}{}}00{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00`````{{{d{Cf}}}{{ABd{n}}}}{{{d{jc}}fff}nFb}{c{{Cd{n}}}{{Mj{h}}}}{c{{ABd{h}}}{{Mj{h}}}}{{c{d{{Mh{{d{Cf}}}}}}}{{ABd{h}}}{{Mj{h}}}}{{c{d{{Mh{{d{Cf}}}}}}}{{Cd{n}}}{{Mj{h}}}}```````````````````````{{{d{ABf}}l}{{Cd{{Kj{hABh}}}}}}`{{{d{Dd}}l}{{Cd{h}}}}{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{Dd}}l}{{Cd{El}}}}{{{d{ABf}}l{d{{Mh{h}}}}}{{Cd{Ab}}}}{{{d{ABf}}l{d{Cf}}}{{Cd{Ab}}}}{{{d{ABj}}}ABj}{{{d{ABl}}}ABl}{{{d{ABn}}}ABn}{{{d{c}}{d{je}}}n{}{}}00{{{d{Dd}}}{{Cd{AB`}}}}{{{d{Dd}}l{d{Cf}}}{{Cd{n}}}}{{{d{ABj}}{d{ABj}}}Ab}{{{d{ABl}}{d{ABl}}}Ab}{{{d{ABn}}{d{ABn}}}Ab}`{{{d{Dd}}}{{Cd{{En{l}}}}}}{{{d{Dd}}}n}{{{d{ABj}}{d{jAd}}}Af}{{{d{ABl}}{d{jAd}}}Af}{{{d{ABn}}{d{jAd}}}Af}{{{d{Dd}}l}{{Cd{n}}}}{cc{}}00{{{d{Dd}}l{d{Cf}}}{{Cd{{Bn{ABh}}}}}}{{{d{Dd}}l}{{Cd{AC`}}}}{{{d{Dd}}l}{{Cd{{Bn{ACb}}}}}}{{{d{Dd}}{d{{Mh{Jj}}}}{d{{Mh{Jd}}}}}{{Cd{n}}}}{{{d{ABj}}{d{jc}}}nBl}{{{d{ABl}}{d{jc}}}nBl}{{{d{ABn}}{d{jc}}}nBl}{{{d{ABf}}l{d{j{In{l}}}}{d{j{Kj{lKl}}}}}{{Cd{n}}}}{{{d{Dd}}{d{Cf}}}{{Cd{l}}}}{ce{}{}}00;{{{d{ABf}}{d{j{Df{ABf}}}}}{{Cd{n}}}}{{{d{Dd}}l}{{Cd{{En{h}}}}}}{{{d{ABf}}l{d{j{Df{ABf}}}}}{{Cd{n}}}}>{{{d{ABf}}{d{j{Df{ABf}}}}c}{{Cd{n}}}{{Dh{{d{jDj}}}}}}{{{d{Dd}}}{{Cd{Id}}}}{{{d{ABf}}lEl}{{Cd{n}}}}{{{d{ABf}}f{d{{Mh{{Bj{lEl}}}}}}}{{Cd{n}}}}``{{{d{ABf}}{d{Nn}}l}{{Cd{Ab}}}}{{{d{ABf}}Ab{d{Nn}}l}Ab}8{{{d{ABf}}c}{{Cd{n}}}{{AAd{}{{AAb{{d{l}}}}}}}}{{{d{ABf}}l{d{Dj}}{d{j{In{l}}}}}{{Cd{n}}}}{{{d{Dd}}}l}{{{d{Dd}}}{{Cd{{En{El}}}}}}{{{d{Dd}}ACd}{{Cd{n}}}};{{{d{Dd}}l{d{{Mh{ABn}}}}}{{Cd{n}}}}{{{d{ABf}}lc}{{Cd{n}}}{{Mj{b}}}}{{{d{Dd}}l{d{{Mh{ABl}}}}}{{Cd{n}}}}{{{d{ABf}}l{d{{Hj{ABf}}}}}{{Cd{n}}}}{{{d{Dd}}l{d{Cf}}ABh}{{Cd{n}}}}{{{d{Dd}}lACb}{{Cd{n}}}}{{{d{c}}}e{}{}}00{c{{Cb{e}}}{}{}}00000{{{d{c}}}Ch{}}00{{{d{ABf}}l{d{j{Df{ABf}}}}}{{Cd{n}}}}{{{d{Dd}}l}{{Cd{n}}}}{{{d{Dd}}lKnKn}{{Cd{n}}}}{{{d{ABf}}{d{j{Df{ABf}}}}Kl}{{Cd{n}}}}{{{d{ABf}}l}{{Cd{n}}}}{{{d{ABf}}l}{{Bn{f}}}}{{{d{ABf}}l}{{Cd{h}}}}``{{{d{{ACf{c}}}}l}{{Cd{h}}}ACh}{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{{ACf{c}}}}l}{{Cd{El}}}ACh}{{{d{{ACf{c}}}}}{{d{c}}}ACh}`{{{d{{ACf{c}}}}ABjElAb}{{Cd{l}}}ACh}{{{d{{ACf{c}}}}}{{Cd{AB`}}}ACh}{{{d{{ACf{c}}}}l{d{Cf}}}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}l}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}}{{Cd{{En{l}}}}}ACh}{{{d{{ACf{c}}}}}nACh}{{{d{{ACf{c}}}}{d{jAd}}}Af{IlACh}}3{cc{}}{{{d{{ACf{c}}}}l{d{Cf}}}{{Cd{{Bn{ABh}}}}}ACh}{{{d{{ACf{c}}}}l}{{Cd{AC`}}}ACh}{{{d{{ACf{c}}}}l}{{Cd{{Bn{ACb}}}}}ACh}{{{d{{ACf{c}}}}{d{{Mh{Jj}}}}{d{{Mh{Jd}}}}}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}{d{Cf}}}{{Cd{l}}}ACh}{ce{}{}}:{{{d{{ACf{c}}}}l}{{Cd{{En{h}}}}}ACh};{{}{{Cd{{ACf{ACj}}}}}}{{{d{{ACf{c}}}}}{{Cd{Id}}}ACh}{{{d{{ACf{c}}}}}lACh}{{{d{{ACf{c}}}}}{{Cd{{En{El}}}}}ACh}{{{d{{ACf{c}}}}ACd}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}l{d{{Mh{ABn}}}}}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}l{d{{Mh{ABl}}}}}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}l{d{Cf}}ABh}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}lACb}{{Cd{n}}}ACh}{c{{Cb{e}}}{}{}}0{{{d{c}}}Ch{}}{{{d{{ACf{c}}}}l}{{Cd{n}}}ACh}{{{d{{ACf{c}}}}lKnKn}{{Cd{n}}}ACh}`````````````````````````````````````````````````````{{{d{ACl}}}{{d{Cf}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0{{{d{ACl}}}ACl}{{{d{ACn}}}ACn}{{{d{c}}{d{je}}}n{}{}}0{{{d{ACl}}{d{ACl}}}Ab}{{{d{ACl}}{d{jAd}}}Af}{{{d{ACn}}{d{jAd}}}Af}{cc{}}0{{{d{Cf}}}{{Cb{AClc}}}{}}{{{d{ACl}}{d{jc}}}nBl}{ce{}{}}00{{}ACn}{{{d{ACn}}}Kl}{{{d{jACn}}}{{Bn{c}}}{}}0{{{d{jACn}}Kl}{{Bn{c}}}{}}{{{d{ACn}}}{{Bj{Kl{Bn{Kl}}}}}}{{{d{c}}}e{}{}}0{c{{Cb{e}}}{}{}}9000{{{d{c}}}Ch{}}0``````````````````````````````````````````{{{d{AD`}}{d{c}}}{{Cd{ACd}}}Dd}{{{d{ADb}}}{{En{Kf}}}}{{{d{ADb}}}{{En{f}}}}{{{d{ADb}}}{{En{Jf}}}}{{{d{ADb}}}{{En{Kl}}}}`{{{d{c}}}{{d{e}}}{}{}}000000000{{{d{jc}}}{{d{je}}}{}{}}000000000{{{d{Id}}}Id}{{{d{AD`}}}AD`}{{{d{ADd}}}ADd}{{{d{ADb}}}ADb}{{{d{ACd}}}ACd}{{{d{ADf}}}ADf}{{{d{ADh}}}ADh}{{{d{ADj}}}ADj}{{{d{ADl}}}ADl}{{{d{ADn}}}ADn}{{{d{c}}{d{je}}}n{}{}}000000000```{{{d{Id}}{d{Id}}}Ab}{{{d{AD`}}{d{AD`}}}Ab}{{{d{ADd}}{d{ADd}}}Ab}{{{d{ADb}}{d{ADb}}}Ab}{{{d{ACd}}{d{ACd}}}Ab}{{{d{ADf}}{d{ADf}}}Ab}{{{d{ADh}}{d{ADh}}}Ab}{{{d{ADj}}{d{ADj}}}Ab}{{{d{ADl}}{d{ADl}}}Ab}{{{d{ADn}}{d{ADn}}}Ab}{{{d{Id}}{d{jAd}}}Af}0{{{d{AD`}}{d{jAd}}}Af}{{{d{ADd}}{d{jAd}}}Af}{{{d{ADb}}{d{jAd}}}Af}{{{d{ACd}}{d{jAd}}}Af}{{{d{ADf}}{d{jAd}}}Af}{{{d{ADh}}{d{jAd}}}Af}{{{d{ADj}}{d{jAd}}}Af}{{{d{ADl}}{d{jAd}}}Af}{{{d{ADn}}{d{jAd}}}Af}{cc{}}00{{{d{{AE`{Jf}}}}}ADb}1{{{d{{AE`{Kf}}}}}ADb}{{{d{{AE`{f}}}}}ADb}{{{AE`{Jf}}}ADb}{{{AE`{f}}}ADb}{{{AE`{Kf}}}ADb}666666{{{d{Id}}{d{jc}}}nBl}{{{d{AD`}}{d{jc}}}nBl}{{{d{ADd}}{d{jc}}}nBl}{{{d{ADb}}{d{jc}}}nBl}{{{d{ACd}}{d{jc}}}nBl}{{{d{ADf}}{d{jc}}}nBl}{{{d{ADh}}{d{jc}}}nBl}{{{d{ADj}}{d{jc}}}nBl}{{{d{ADl}}{d{jc}}}nBl}{{{d{ADn}}{d{jc}}}nBl}```````{ce{}{}}000000000```{{lADdcADb}ACd{{Mj{h}}}}````{{{d{c}}}e{}{}}000000000{{{d{c}}}h{}}{c{{Cb{e}}}{}{}}00{{{d{{Mh{Kf}}}}}{{Cb{ADbc}}}{}}{{{d{{Mh{f}}}}}{{Cb{ADbc}}}{}}2{{{d{{Mh{Jf}}}}}{{Cb{ADbc}}}{}}3333333333333333{{{d{c}}}Ch{}}000000000````````````````````````````````````````````{{}AEb}{{}AEd}{{{d{AEf}}El}El}{{AEbAEb}AEb}{{AEdAEd}AEd}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}3210{{{d{AEb}}}f}0{{{d{AEd}}}f}05432{{{d{c}}}{{d{e}}}{}{}}00000000{{{d{jc}}}{{d{je}}}{}{}}00000000{{{d{ABh}}}ABh}{{{d{AEb}}}AEb}{{{d{AEd}}}AEd}{{{d{ACb}}}ACb}{{{d{AEh}}}AEh}{{{d{AEj}}}AEj}{{{d{AEl}}}AEl}{{{d{AEf}}}AEf}{{{d{AC`}}}AC`}{{{d{c}}{d{je}}}n{}{}}00000000{AEbAEb}{AEdAEd}{{{d{AEb}}AEb}Ab}{{{d{AEd}}AEd}Ab}{{}AEb}{{}AEd}{{AEbAEb}AEb}{{AEdAEd}AEd}32{{{d{ABh}}{d{ABh}}}Ab}{{{d{AEb}}{d{AEb}}}Ab}{{{d{AEd}}{d{AEd}}}Ab}{{{d{ACb}}{d{ACb}}}Ab}{{{d{AEh}}{d{AEh}}}Ab}{{{d{AEj}}{d{AEj}}}Ab}{{{d{AEl}}{d{AEl}}}Ab}{{{d{AEf}}{d{AEf}}}Ab}{{{d{AC`}}{d{AC`}}}Ab}{{{d{jAEb}}c}n{{AAl{}{{AAb{AEb}}}}}}{{{d{jAEd}}c}n{{AAl{}{{AAb{AEd}}}}}}{{{d{ABh}}{d{jAd}}}Af}{{{d{AEb}}{d{jAd}}}Af}0000{{{d{AEd}}{d{jAd}}}Af}0000{{{d{ACb}}{d{jAd}}}Af}{{{d{AEh}}{d{jAd}}}Af}{{{d{AEj}}{d{jAd}}}Af}{{{d{AEl}}{d{jAd}}}Af}{{{d{AEf}}{d{jAd}}}Af}{{{d{AC`}}{d{jAd}}}Af}{cc{}}00000000{f{{Bn{AEb}}}}{f{{Bn{AEd}}}}{fAEb}0{fAEd}010{cAEb{{AAl{}{{AAb{AEb}}}}}}{cAEd{{AAl{}{{AAb{AEd}}}}}}{{{d{Cf}}}{{Bn{AEb}}}}{{{d{Cf}}}{{Bn{AEd}}}}{{{d{ABh}}{d{jc}}}nBl}{{{d{AEb}}{d{jc}}}nBl}{{{d{AEd}}{d{jc}}}nBl}{{{d{ACb}}{d{jc}}}nBl}{{{d{AEh}}{d{jc}}}nBl}{{{d{AEj}}{d{jc}}}nBl}{{{d{AEl}}{d{jc}}}nBl}{{{d{AEf}}{d{jc}}}nBl}{{{d{AC`}}{d{jc}}}nBl}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}{{AEbAEb}AEb}{{AEdAEd}AEd}{{{d{AEb}}AEb}Ab}{{{d{AEd}}AEd}Ab}{ce{}{}}00000000{AEbc{}}{AEdc{}}{{{d{AEb}}}Ab}{{{d{AEd}}}Ab}10{{{d{AEb}}}{{AEn{AEb}}}}{{{d{AEd}}}{{AEn{AEd}}}}{{{d{AEb}}}{{AF`{AEb}}}}{{{d{AEd}}}{{AF`{AEd}}}}{{AEbAbACbflAB`ff}AEl}{{AEd{Bn{El}}{Bn{El}}{Bn{El}}{Bn{El}}}AEf}{{AbAEhAEj}AC`}{AEbAEb}{AEdAEd}{{{d{jAEb}}AEb}n}{{{d{jAEd}}AEd}n}{{{d{jAEb}}AEbAb}n}{{{d{jAEd}}AEdAb}n}{{AEbAEb}AEb}{{AEdAEd}AEd}5410{{{d{c}}}e{}{}}0000000065{c{{Cb{e}}}{}{}}00000000{{{d{{Mh{f}}}}}{{Cd{AEl}}}}{{{d{{Mh{f}}}}}{{Cd{AEf}}}}222222222{{{d{c}}}Ch{}}0000000065````````{{Nne}{{AFb{c}}}Dd{{Nn{c}}}}{{{d{c}}}{{d{e}}}{}{}}000000{{{d{jc}}}{{d{je}}}{}{}}000000{{{d{AFd}}}AFd}{{{d{AFf}}}AFf}{{{d{AFh}}}AFh}{{{d{AFj}}}AFj}{{{d{c}}{d{je}}}n{}{}}000{{{d{AFd}}{d{AFd}}}Ab}{{{d{AFf}}{d{AFf}}}Ab}{{{d{AFh}}{d{AFh}}}Ab}{{{d{AFj}}{d{AFj}}}Ab}{{{d{AFd}}{d{jAd}}}Af}{{{d{AFf}}{d{jAd}}}Af}{{{d{AFh}}{d{jAd}}}Af}{{{d{AFj}}{d{jAd}}}Af}{{{d{{AFb{c}}}}{d{jAd}}}Af{IlDd}}{{{d{{AFl{c}}}}{d{jAd}}}Af{IlDd}}{{{d{{AFn{c}}}}{d{jAd}}}Af{IlDd}}{cc{}}000000{ce{}{}}000000{Nn{{AFn{c}}}Dd}{{Nne}{{AFl{c}}}Dd{{Nn{c}}}}{{{d{Nn}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{AFd}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{AFf}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{AFh}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{AFj}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{{AFb{c}}}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{{AFl{c}}}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{{AFn{c}}}}l{d{c}}}{{Cd{Ab}}}Dd}{{{d{c}}}e{}{}}000{c{{Cb{e}}}{}{}}0000000000000{{{d{c}}}Ch{}}000000","D":"HIn","p":[[5,"Color",0],[1,"reference"],[1,"u32"],[5,"String",2299],[0,"mut"],[5,"Xid",0,468],[1,"unit"],[6,"Ordering",2300],[1,"bool"],[5,"Formatter",2301],[8,"Result",2301],[6,"Error",0],[6,"ReplyOrIdError",2302],[6,"ConnectionError",2302],[6,"ReplyError",2302],[5,"FromUtf8Error",2299],[5,"Error",2303],[6,"ConnectError",2304],[5,"ParseIntError",2305],[1,"f64"],[1,"tuple"],[10,"Hasher",2306],[6,"Option",2307],[10,"Error",2308],[6,"Result",2309],[8,"Result",0],[1,"str"],[5,"TypeId",2310],[10,"KeyEventHandler",532],[5,"Box",2311],[10,"IntoMessage",802,2312],[17,"Output"],[10,"Fn",2313],[10,"XConn",1512],[5,"State",468],[10,"FnMut",2313],[8,"ClientSet",468],[10,"Clone",2314],[10,"MouseEventHandler",532],[5,"MouseDragHandler",130],[5,"MouseResizeHandler",130],[5,"MotionNotifyEvent",532],[5,"MouseEvent",532],[1,"i32"],[5,"SpacingHook",169],[5,"Rect",1422],[5,"Vec",2315],[1,"f32"],[10,"Layout",802],[5,"MainAndStack",188],[5,"CenteredMain",188],[5,"Monocle",188],[5,"Grid",188],[5,"Message",802,2312],[5,"Stack",1201,2316],[5,"IncMain",275],[5,"ExpandMain",275],[5,"ShrinkMain",275],[5,"Rotate",275],[5,"Mirror",275],[5,"UnwrapTransformer",275],[5,"Hide",275],[5,"ReflectHorizontal",366],[5,"ReflectVertical",366],[5,"Gaps",366],[5,"ReserveTop",366],[10,"Any",2317],[5,"WindowManager",468],[5,"Config",468],[10,"EventHook",736],[10,"LayoutHook",736],[10,"ManageHook",736],[10,"StateHook",736],[6,"XEvent",1752],[5,"RefCell",2318],[5,"Arc",2319],[10,"Default",2320],[10,"Debug",2301],[5,"HashSet",2321],[8,"KeyBindings",532],[8,"MouseBindings",532],[5,"MouseState",532],[1,"u8"],[6,"KeyPress",532],[5,"KeyCode",532],[6,"MouseButton",532],[6,"ModifierKey",532],[5,"ModifierKeyIter",532],[6,"MouseEventKind",532],[5,"MouseEventData",532],[1,"u16"],[8,"KeyCodeMask",532],[5,"HashMap",2322],[1,"usize"],[1,"i16"],[10,"AsRef",2323],[6,"XKeySym",2324],[5,"ComposedEventHook",736],[5,"ComposedManageHook",736],[5,"ComposedStateHook",736],[5,"ComposedLayoutHook",736],[8,"LayoutStack",802],[10,"LayoutTransformer",802,2325],[10,"FnOnce",2313],[6,"FullScreenAction",853],[1,"fn"],[5,"DMenuConfig",1131],[1,"slice"],[10,"Into",2323],[5,"DefaultWorkspace",891],[5,"DefaultTiled",911],[5,"FloatingFixed",911],[5,"FloatingCentered",911],[5,"FloatingRelative",911],[5,"SetWorkspace",911],[5,"NamedScratchPad",963],[5,"ToggleNamedScratchPad",963],[6,"Cow",2326],[10,"Query",2208],[5,"SpawnOnStartup",991],[5,"WindowSwallowing",1006],[5,"Conditional",1017,2327],[5,"Fibonacci",1017],[5,"Tatami",1017],[6,"NotifyLevel",1072],[6,"RelativePosition",1201],[5,"NotfyState",1096],[5,"CurrentStateConfig",1096],[5,"DMenu",1131],[6,"MenuMatch",1131],[6,"DMenuKind",1131],[5,"StackSet",1201,2328],[10,"PartialEq",2300],[10,"Eq",2300],[10,"Hash",2306],[5,"Workspace",1201,2329],[17,"Item"],[10,"Iterator",2330],[5,"Screen",1201,2331],[6,"Position",1201,2316],[10,"Display",2301],[10,"IntoIterator",2332],[5,"RelativeRect",1422],[5,"Point",1422],[10,"RelativeTo",1422],[8,"Result",2303],[10,"XConnExt",1512],[6,"Prop",1960],[6,"WinType",1512],[6,"ClientConfig",1512],[6,"ClientAttr",1512],[5,"WindowAttributes",1960],[6,"WmState",1960],[5,"ClientMessage",1752],[5,"Conn",1625],[10,"Connection",2333],[5,"RustConnection",2334],[6,"Atom",1665],[5,"AtomIter",1665],[6,"ClientMessageKind",1752],[6,"ClientMessageData",1752],[6,"ClientEventMask",1752],[5,"ConfigureEvent",1752],[5,"ExposeEvent",1752],[5,"PointerChange",1752],[5,"PropertyEvent",1752],[5,"ResizeRequestEvent",1752],[1,"array"],[5,"WmHintsFlags",1960],[5,"WmNormalHintsFlags",1960],[5,"WmNormalHints",1960],[6,"MapState",1960],[6,"WindowClass",1960],[5,"WmHints",1960],[5,"Iter",2335],[5,"IterNames",2335],[5,"AndQuery",2208],[5,"Title",2208],[5,"AppName",2208],[5,"ClassName",2208],[5,"StringProperty",2208],[5,"OrQuery",2208],[5,"NotQuery",2208],[15,"UnknownMouseButton",105],[15,"InvalidClientMessage",105],[15,"InvalidHexColor",105],[15,"InvalidPropertyData",105],[15,"InsufficientWorkspaces",105],[15,"UnknownKeyName",105],[15,"UnknownModifier",105],[15,"InvalidHints",105],[15,"NonUniqueTags",105],[15,"UnknownStateExtension",105]],"r":[[28,468],[802,2312],[805,2325],[806,2312],[863,2336],[864,2336],[870,2336],[879,963],[880,991],[881,963],[882,1006],[883,905],[884,963],[1017,2327],[1208,2316],[1211,2331],[1212,2316],[1213,2328],[1215,2329],[1512,1665],[1523,1960],[1524,2208],[1531,1960],[1534,1752]],"b":[[50,"impl-Debug-for-Xid"],[51,"impl-Display-for-Xid"],[52,"impl-Display-for-Error"],[53,"impl-Debug-for-Error"],[57,"impl-From%3CReplyOrIdError%3E-for-Error"],[59,"impl-From%3CConnectionError%3E-for-Error"],[60,"impl-From%3CReplyError%3E-for-Error"],[61,"impl-From%3CFromUtf8Error%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[63,"impl-From%3CConnectError%3E-for-Error"],[64,"impl-From%3CParseIntError%3E-for-Error"],[65,"impl-From%3C(f64,+f64,+f64,+f64)%3E-for-Color"],[66,"impl-From%3C(f64,+f64,+f64)%3E-for-Color"],[67,"impl-From%3Cu32%3E-for-Color"],[94,"impl-TryFrom%3CString%3E-for-Color"],[95,"impl-TryFrom%3C%26str%3E-for-Color"],[818,"impl-Stack%3CBox%3Cdyn+Layout%3E%3E"],[819,"impl-Layout-for-Stack%3CBox%3Cdyn+Layout%3E%3E"],[1270,"impl-Debug-for-Screen%3CC%3E"],[1271,"impl-Display-for-Screen%3CC%3E"],[1273,"impl-Display-for-Stack%3CT%3E"],[1274,"impl-Debug-for-Stack%3CT%3E"],[1276,"impl-Display-for-Workspace%3CT%3E"],[1277,"impl-Debug-for-Workspace%3CT%3E"],[1322,"impl-IntoIterator-for-%26Stack%3CT%3E"],[1323,"impl-IntoIterator-for-%26mut+Stack%3CT%3E"],[1324,"impl-IntoIterator-for-Stack%3CT%3E"],[1456,"impl-From%3CRect%3E-for-Point"],[1457,"impl-From%3C%26Rect%3E-for-Point"],[1458,"impl-From%3C(%26u32,+%26u32)%3E-for-Point"],[1459,"impl-From%3C(u32,+u32)%3E-for-Point"],[1853,"impl-Debug-for-XEvent"],[1854,"impl-Display-for-XEvent"],[1867,"impl-From%3C%26%5Bu8;+20%5D%3E-for-ClientMessageData"],[1869,"impl-From%3C%26%5Bu16;+10%5D%3E-for-ClientMessageData"],[1870,"impl-From%3C%26%5Bu32;+5%5D%3E-for-ClientMessageData"],[1871,"impl-From%3C%5Bu8;+20%5D%3E-for-ClientMessageData"],[1872,"impl-From%3C%5Bu32;+5%5D%3E-for-ClientMessageData"],[1873,"impl-From%3C%5Bu16;+10%5D%3E-for-ClientMessageData"],[1929,"impl-TryFrom%3C%26%5Bu16%5D%3E-for-ClientMessageData"],[1930,"impl-TryFrom%3C%26%5Bu32%5D%3E-for-ClientMessageData"],[1932,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-ClientMessageData"],[2014,"impl-WmHintsFlags"],[2015,"impl-Flags-for-WmHintsFlags"],[2016,"impl-Flags-for-WmNormalHintsFlags"],[2017,"impl-WmNormalHintsFlags"],[2080,"impl-Debug-for-WmHintsFlags"],[2081,"impl-Octal-for-WmHintsFlags"],[2082,"impl-UpperHex-for-WmHintsFlags"],[2083,"impl-LowerHex-for-WmHintsFlags"],[2084,"impl-Binary-for-WmHintsFlags"],[2085,"impl-UpperHex-for-WmNormalHintsFlags"],[2086,"impl-LowerHex-for-WmNormalHintsFlags"],[2087,"impl-Octal-for-WmNormalHintsFlags"],[2088,"impl-Binary-for-WmNormalHintsFlags"],[2089,"impl-Debug-for-WmNormalHintsFlags"],[2107,"impl-WmHintsFlags"],[2108,"impl-Flags-for-WmHintsFlags"],[2109,"impl-Flags-for-WmNormalHintsFlags"],[2110,"impl-WmNormalHintsFlags"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKwEnQAgAAUAJwAEAC4AAwAzAAUAOgAAADwACABGAAEATwAAAFYAAABYAA4AhQADAIsABQCTAAEAmQADAKEAAQCkAAUAqwABAK4AAwC2AAAAuAAEAMEABwDNAAMA1QAOAOgAAwDyAAMA9wADAAABAwAGAQsAGwEpAFMBGwBzARcAjwEHAJwBAwCiAQsAsAEgAN8BBQDtAQAA8wECAAwCCAA8AhMAVAIUAGwCEwCLAgcAnwIBAKMCAACrAgIAsQIAALMCAAC1AioA6QIHAPgCBgAQAwAAEgMAABQDAAAWAwwAKAMBACwDAAAuAwAAMAMAADQDAAA6AwAAPAMAAD4DAABAAwAATQMCAFoDBABiAwEAaAMAAGsDAABtAwgAfQMBAIADAwCGAwMAlQMTALUDDgDIAwcA0QMBANkDBgDhAwEA5AMEAOsDAwDwAwEA8wMBAPcDAgD9AwUABgQCAAsECAAXBAIAHQQFACYECgA1BAQAPAQBAD8EAABDBAQASwQNAGQEBwB2BAcAfwQHAIkEAQCMBAMAoQQPAMMECwDTBAsA6QQEAPAEAgD3BAgAKwUCAGkFCAB0BQUAewUFAIIFBQCXBQUAngUFAKcFCACxBQMAtgUAALoFAQDFBQEA0gULAOkFAAD0BQEA/AUAAP8FAAADBgUADAYFABQGAgAaBgIAJQYCAEcGCwBcBgMAYwYBAGYGAwBrBgQAcQYCAHUGDAC3BgsAxQYBAMkGDwAJBycANAcUAEwHAABOBwQAWQcJAHwHKwDgBwEA5wcjAA8IAQAVCAgAIAgQAD0IAQBGCAgAXggBAHcICACCCAgAjQgRAKoIIADcCB8A"}],\ ["penrose_keysyms",{"t":"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["XF86XK_AudioLowerVolume","XF86XK_AudioMicMute","XF86XK_AudioMute","XF86XK_AudioNext","XF86XK_AudioPlay","XF86XK_AudioPrev","XF86XK_AudioRaiseVolume","XF86XK_AudioStop","XF86XK_Calculator","XF86XK_DisplayOff","XF86XK_KbdBrightnessDown","XF86XK_KbdBrightnessUp","XF86XK_KbdLightOnOff","XF86XK_MonBrightnessCycle","XF86XK_MonBrightnessDown","XF86XK_MonBrightnessUp","XF86XK_Standby","XF86XK_TouchpadToggle","XK_0","XK_1","XK_2","XK_3","XK_3270_AltCursor","XK_3270_Attn","XK_3270_BackTab","XK_3270_Copy","XK_3270_CursorBlink","XK_3270_CursorSelect","XK_3270_DeleteWord","XK_3270_Duplicate","XK_3270_Enter","XK_3270_EraseEOF","XK_3270_EraseInput","XK_3270_ExSelect","XK_3270_FieldMark","XK_3270_Ident","XK_3270_Jump","XK_3270_KeyClick","XK_3270_Left2","XK_3270_PA1","XK_3270_PA2","XK_3270_PA3","XK_3270_Play","XK_3270_Quit","XK_3270_Record","XK_3270_Reset","XK_3270_Right2","XK_3270_Rule","XK_3270_Setup","XK_3270_Test","XK_4","XK_5","XK_6","XK_7","XK_8","XK_9","XK_A","XK_AE","XK_Aacute","XK_Abreve","XK_Abreveacute","XK_Abrevetilde","XK_Adiaeresis","XK_Alt_L","XK_Alt_R","XK_Amacron","XK_Aogonek","XK_Aring","XK_Atilde","XK_B","XK_BackSpace","XK_Begin","XK_Break","XK_C","XK_CH","XK_C_H","XK_C_h","XK_Cacute","XK_Cancel","XK_Caps_Lock","XK_Ccaron","XK_Ccedilla","XK_Ch","XK_Clear","XK_ColonSign","XK_Control_L","XK_Control_R","XK_CruzeiroSign","XK_D","XK_Dcaron","XK_Delete","XK_DongSign","XK_Down","XK_Dstroke","XK_E","XK_ENG","XK_ETH","XK_EZH","XK_Eacute","XK_Ecaron","XK_EcuSign","XK_Ediaeresis","XK_Emacron","XK_End","XK_Eogonek","XK_Escape","XK_Eth","XK_Etilde","XK_EuroSign","XK_Execute","XK_F","XK_F1","XK_F10","XK_F11","XK_F12","XK_F13","XK_F14","XK_F15","XK_F16","XK_F17","XK_F18","XK_F19","XK_F2","XK_F20","XK_F21","XK_F22","XK_F23","XK_F24","XK_F25","XK_F26","XK_F27","XK_F28","XK_F29","XK_F3","XK_F30","XK_F31","XK_F32","XK_F33","XK_F34","XK_F35","XK_F4","XK_F5","XK_F6","XK_F7","XK_F8","XK_F9","XK_FFrancSign","XK_Find","XK_G","XK_Gbreve","XK_Gcaron","XK_Gcedilla","XK_H","XK_Help","XK_Home","XK_Hstroke","XK_Hyper_L","XK_Hyper_R","XK_I","XK_ISO_Center_Object","XK_ISO_Continuous_Underline","XK_ISO_Discontinuous_Underline","XK_ISO_Emphasize","XK_ISO_Enter","XK_ISO_Left_Tab","XK_ISO_Level2_Latch","XK_ISO_Level3_Latch","XK_ISO_Level3_Lock","XK_ISO_Level3_Shift","XK_ISO_Level5_Latch","XK_ISO_Level5_Lock","XK_ISO_Level5_Shift","XK_ISO_Lock","XK_ISO_Partial_Space_Left","XK_ISO_Partial_Space_Right","XK_ISO_Set_Margin_Left","XK_ISO_Set_Margin_Right","XK_Iacute","XK_Ibreve","XK_Idiaeresis","XK_Imacron","XK_Insert","XK_Iogonek","XK_Itilde","XK_J","XK_K","XK_KP_0","XK_KP_1","XK_KP_2","XK_KP_3","XK_KP_4","XK_KP_5","XK_KP_6","XK_KP_7","XK_KP_8","XK_KP_9","XK_KP_Add","XK_KP_Begin","XK_KP_Decimal","XK_KP_Delete","XK_KP_Divide","XK_KP_Down","XK_KP_End","XK_KP_Enter","XK_KP_Equal","XK_KP_F1","XK_KP_F2","XK_KP_F3","XK_KP_F4","XK_KP_Home","XK_KP_Insert","XK_KP_Left","XK_KP_Multiply","XK_KP_Next","XK_KP_Page_Down","XK_KP_Page_Up","XK_KP_Prior","XK_KP_Right","XK_KP_Separator","XK_KP_Space","XK_KP_Subtract","XK_KP_Tab","XK_KP_Up","XK_Kcedilla","XK_Korean_Won","XK_L","XK_L1","XK_L10","XK_L2","XK_L3","XK_L4","XK_L5","XK_L6","XK_L7","XK_L8","XK_L9","XK_Lacute","XK_Lcaron","XK_Lcedilla","XK_Left","XK_Linefeed","XK_LiraSign","XK_Lstroke","XK_M","XK_Menu","XK_Meta_L","XK_Meta_R","XK_MillSign","XK_Mode_switch","XK_N","XK_Nacute","XK_NairaSign","XK_Ncaron","XK_Ncedilla","XK_NewSheqelSign","XK_Next","XK_Ntilde","XK_Num_Lock","XK_O","XK_OE","XK_Oacute","XK_Obarred","XK_Ocaron","XK_Odiaeresis","XK_Odoubleacute","XK_Omacron","XK_Ooblique","XK_Oslash","XK_Otilde","XK_P","XK_Page_Down","XK_Page_Up","XK_Pause","XK_PesetaSign","XK_Print","XK_Prior","XK_Q","XK_R","XK_R1","XK_R10","XK_R11","XK_R12","XK_R13","XK_R14","XK_R15","XK_R2","XK_R3","XK_R4","XK_R5","XK_R6","XK_R7","XK_R8","XK_R9","XK_Racute","XK_Rcaron","XK_Rcedilla","XK_Redo","XK_Return","XK_Right","XK_RupeeSign","XK_S","XK_SCHWA","XK_Sacute","XK_Scaron","XK_Scedilla","XK_Scroll_Lock","XK_Select","XK_Shift_L","XK_Shift_Lock","XK_Shift_R","XK_Super_L","XK_Super_R","XK_Sys_Req","XK_T","XK_Tab","XK_Tcaron","XK_Tcedilla","XK_Terminate_Server","XK_Tslash","XK_U","XK_Uacute","XK_Ubreve","XK_Udiaeresis","XK_Udoubleacute","XK_Umacron","XK_Undo","XK_Uogonek","XK_Up","XK_Uring","XK_Utilde","XK_V","XK_W","XK_Wacute","XK_Wdiaeresis","XK_WonSign","XK_X","XK_Y","XK_Yacute","XK_Ydiaeresis","XK_Ytilde","XK_Z","XK_Zacute","XK_Zcaron","XK_Zstroke","XK_a","XK_aacute","XK_abreve","XK_abreveacute","XK_abrevetilde","XK_acute","XK_adiaeresis","XK_ae","XK_amacron","XK_ampersand","XK_aogonek","XK_apostrophe","XK_approximate","XK_aring","XK_asciicircum","XK_asciitilde","XK_asterisk","XK_at","XK_atilde","XK_b","XK_backslash","XK_ballotcross","XK_bar","XK_blank","XK_botintegral","XK_botleftparens","XK_botleftsqbracket","XK_botrightparens","XK_botrightsqbracket","XK_bott","XK_braceleft","XK_braceright","XK_bracketleft","XK_bracketright","XK_breve","XK_brokenbar","XK_c","XK_c_h","XK_cacute","XK_careof","XK_caret","XK_caron","XK_ccaron","XK_ccedilla","XK_cedilla","XK_cent","XK_ch","XK_checkerboard","XK_checkmark","XK_club","XK_colon","XK_comma","XK_copyright","XK_cr","XK_crossinglines","XK_currency","XK_cursor","XK_d","XK_dagger","XK_dcaron","XK_decimalpoint","XK_degree","XK_diaeresis","XK_diamond","XK_digitspace","XK_division","XK_dollar","XK_doubbaselinedot","XK_doubleacute","XK_doubledagger","XK_doublelowquotemark","XK_downarrow","XK_downcaret","XK_downshoe","XK_downstile","XK_downtack","XK_dstroke","XK_e","XK_eacute","XK_ecaron","XK_ediaeresis","XK_ellipsis","XK_em3space","XK_em4space","XK_emacron","XK_emdash","XK_emfilledrect","XK_emopenrectangle","XK_emspace","XK_endash","XK_eng","XK_enspace","XK_eogonek","XK_equal","XK_eth","XK_etilde","XK_exclam","XK_exclamdown","XK_ezh","XK_f","XK_femalesymbol","XK_ff","XK_figdash","XK_fiveeighths","XK_fivesixths","XK_fourfifths","XK_function","XK_g","XK_gbreve","XK_gcaron","XK_gcedilla","XK_grave","XK_greater","XK_greaterthanequal","XK_guillemotleft","XK_guillemotright","XK_h","XK_hairspace","XK_heart","XK_hexagram","XK_horizconnector","XK_hstroke","XK_ht","XK_hyphen","XK_i","XK_iacute","XK_ibreve","XK_identical","XK_idiaeresis","XK_idotless","XK_ifonlyif","XK_imacron","XK_implies","XK_includedin","XK_includes","XK_infinity","XK_integral","XK_intersection","XK_iogonek","XK_itilde","XK_j","XK_jot","XK_k","XK_kappa","XK_kcedilla","XK_kra","XK_l","XK_lacute","XK_latincross","XK_lcaron","XK_lcedilla","XK_leftanglebracket","XK_leftarrow","XK_leftcaret","XK_leftdoublequotemark","XK_leftmiddlecurlybrace","XK_leftopentriangle","XK_leftpointer","XK_leftradical","XK_leftshoe","XK_leftsinglequotemark","XK_leftt","XK_lefttack","XK_less","XK_lessthanequal","XK_lf","XK_logicaland","XK_logicalor","XK_lowleftcorner","XK_lowrightcorner","XK_lstroke","XK_m","XK_macron","XK_malesymbol","XK_maltesecross","XK_marker","XK_masculine","XK_minus","XK_minutes","XK_mu","XK_multiply","XK_musicalflat","XK_musicalsharp","XK_n","XK_nabla","XK_nacute","XK_ncaron","XK_ncedilla","XK_nl","XK_nobreakspace","XK_notequal","XK_notsign","XK_ntilde","XK_numbersign","XK_numerosign","XK_o","XK_oacute","XK_obarred","XK_ocaron","XK_odiaeresis","XK_odoubleacute","XK_oe","XK_ogonek","XK_omacron","XK_oneeighth","XK_onefifth","XK_onehalf","XK_onequarter","XK_onesixth","XK_onethird","XK_ooblique","XK_openstar","XK_ordfeminine","XK_oslash","XK_otilde","XK_overbar","XK_overline","XK_p","XK_paragraph","XK_parenleft","XK_parenright","XK_partialderivative","XK_percent","XK_period","XK_periodcentered","XK_permille","XK_phonographcopyright","XK_plus","XK_plusminus","XK_prescription","XK_prolongedsound","XK_punctspace","XK_q","XK_quad","XK_question","XK_questiondown","XK_quotedbl","XK_quoteleft","XK_quoteright","XK_r","XK_racute","XK_radical","XK_rcaron","XK_rcedilla","XK_registered","XK_rightanglebracket","XK_rightarrow","XK_rightcaret","XK_rightdoublequotemark","XK_rightmiddlecurlybrace","XK_rightopentriangle","XK_rightpointer","XK_rightshoe","XK_rightsinglequotemark","XK_rightt","XK_righttack","XK_s","XK_sacute","XK_scaron","XK_scedilla","XK_schwa","XK_script_switch","XK_seconds","XK_section","XK_semicolon","XK_semivoicedsound","XK_seveneighths","XK_signaturemark","XK_signifblank","XK_similarequal","XK_singlelowquotemark","XK_slash","XK_soliddiamond","XK_space","XK_ssharp","XK_sterling","XK_t","XK_tcaron","XK_tcedilla","XK_telephone","XK_telephonerecorder","XK_therefore","XK_thinspace","XK_threeeighths","XK_threefifths","XK_threequarters","XK_topintegral","XK_topleftparens","XK_topleftradical","XK_topleftsqbracket","XK_toprightparens","XK_toprightsqbracket","XK_topt","XK_trademark","XK_tslash","XK_twofifths","XK_twothirds","XK_u","XK_uacute","XK_ubreve","XK_udiaeresis","XK_udoubleacute","XK_umacron","XK_underbar","XK_underscore","XK_union","XK_uogonek","XK_uparrow","XK_upcaret","XK_upleftcorner","XK_uprightcorner","XK_upshoe","XK_upstile","XK_uptack","XK_uring","XK_utilde","XK_v","XK_variation","XK_vertbar","XK_vertconnector","XK_voicedsound","XK_vt","XK_w","XK_wacute","XK_wdiaeresis","XK_x","XK_y","XK_yacute","XK_ydiaeresis","XK_yen","XK_ytilde","XK_z","XK_zacute","XK_zcaron","XK_zstroke","XKeySym","XKeySymIter","as_ref","as_utf8_string","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","fmt","fmt","from","from","from_str","hash","into","into","into_iter","iter","len","next","next_back","nth","size_hint","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"penrose_keysyms"],[716,"alloc::string"],[717,"core::result"],[718,"core::fmt"],[719,"core::hash"],[720,"core::option"],[721,"core::any"]],"i":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,8,1,8,1,8,1,8,1,1,8,1,8,1,1,1,8,8,1,8,8,8,8,8,1,8,1,1,8,1,8,1,8],"f":"`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{{d{b}}}{{d{f}}}}{{{d{b}}}{{l{hj}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{nc}}}{{d{ne}}}{}{}}0{{{d{b}}}b}{{{d{A`}}}A`}{{{d{c}}{d{ne}}}Ab{}{}}0{{{d{b}}{d{b}}}Ad}{{{d{b}}{d{nAf}}}Ah}{{{d{A`}}{d{nAf}}}Ah}{cc{}}0{{{d{f}}}{{l{bc}}}{}}{{{d{b}}{d{nc}}}AbAj}{ce{}{}}00{{}A`}{{{d{A`}}}Al}{{{d{nA`}}}{{An{c}}}{}}0{{{d{nA`}}Al}{{An{c}}}{}}{{{d{A`}}}{{B`{Al{An{Al}}}}}}{{{d{c}}}e{}{}}0{c{{l{e}}}{}{}}9000{{{d{c}}}Bb{}}0","D":"EEn","p":[[6,"XKeySym",0],[1,"reference"],[1,"str"],[5,"String",716],[5,"FromUtf8Error",716],[6,"Result",717],[0,"mut"],[5,"XKeySymIter",0],[1,"unit"],[1,"bool"],[5,"Formatter",718],[8,"Result",718],[10,"Hasher",719],[1,"usize"],[6,"Option",720],[1,"tuple"],[5,"TypeId",721]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAB0ABACqAgAArAIKALkCAQC9Ag8A"}],\ -["penrose_ui",{"t":"EEPGPPPPPPEIEEPPPPPCNNCNNNNNNNCNHNNNNOOPFGFPNNNNNNNNNNHNNNNNNNNNNHNNHCHNNNNNNNNNNNNCSFNNNNNNNNNFFFGPPFFFFPKIKFFMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNCMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCHHHHHHHHHHHHHFFFONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNFNNNNNNNNNNN","n":["Context","Draw","Err","Error","InvalidHexColor","NoFallbackFontForChar","NulError","Ok","ParseInt","Penrose","Position","Result","StatusBar","TextStyle","UnableToAllocateColor","UnableToOpenFont","UnableToOpenFontPattern","UnableToParseFontPattern","UnintialisedSurface","bar","borrow","borrow_mut","core","fmt","fmt","from","from","from","from","into","layout_viewer","source","status_bar","to_string","try_from","try_into","type_id","code","id","Bottom","PerScreen","Position","StatusBar","Top","add_to","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","event_hook","fmt","fmt","fmt","from","from","from","hash","into","into","into","manage_hook","new","redraw","refresh_hook","schedule","startup_hook","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","try_new","try_new_per_screen","type_id","type_id","type_id","widgets","MIN_DURATION","UpdateSchedule","borrow","borrow_mut","fmt","from","into","new","try_from","try_into","type_id","ActiveWindowName","CurrentLayout","DefaultUi","FocusState","FocusedOnOtherScreen","FocusedOnThisScreen","IntervalText","RefreshText","RootWindowName","Text","Unfocused","Widget","Workspaces","WorkspacesUi","WorkspacesWidget","WsMeta","background_color","background_color","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","colors_for_workspace","colors_for_workspace","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","debug","draw","draw","draw","draw","draw","draw","draw","draw","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focused","from","from","from","from","from","from","from","from","from","from","from","get_text","get_text_mut","into","into","into","into","into","into","into","into","into","into","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","new","new","new","new","new","new","new","new","new_with_ui","occupied","on_event","on_event","on_event","on_new_client","on_refresh","on_refresh","on_refresh","on_refresh","on_refresh","on_startup","on_startup","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","set_text","sys","tag","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","ui_tag","ui_tag","update_from_state","update_from_state","update_schedule","update_schedule","ActiveWindowId","StateSummary","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","current_extent","current_extent","draw","draw","eq","eq","fmt","fmt","from","from","into","into","is_greedy","is_greedy","new","new","on_refresh","on_refresh","require_draw","require_draw","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","helpers","interval","refresh","amixer_text","battery_file_search","battery_text","date_text","wifi_text","amixer_volume","battery_summary","current_date_and_time","wifi_network","amixer_volume","battery_summary","current_date_and_time","wifi_network","Context","Draw","TextStyle","bg","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone_into","conn","context_for","destroy_window_and_surface","draw_rect","draw_text","drop","eq","fg","fill_bg","fill_polygon","fill_rect","flush","flush","fmt","fmt","fmt","from","from","from","into","into","into","new","new_window","padding","reset_offset","set_font","set_offset","set_x_offset","set_y_offset","text_extent","to_owned","translate","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","LayoutViewer","borrow","borrow_mut","fmt","from","into","new","render_layout_with_stack","showcase_layouts","try_from","try_into","type_id"],"q":[[0,"penrose_ui"],[37,"penrose_ui::Error"],[39,"penrose_ui::bar"],[84,"penrose_ui::bar::schedule"],[95,"penrose_ui::bar::widgets"],[294,"penrose_ui::bar::widgets::debug"],[332,"penrose_ui::bar::widgets::sys"],[335,"penrose_ui::bar::widgets::sys::helpers"],[340,"penrose_ui::bar::widgets::sys::interval"],[344,"penrose_ui::bar::widgets::sys::refresh"],[348,"penrose_ui::core"],[403,"penrose_ui::layout_viewer"],[415,"core::fmt"],[416,"penrose"],[417,"alloc::ffi::c_str"],[418,"core::num::error"],[419,"core::error"],[420,"core::option"],[421,"core::convert"],[422,"penrose::x"],[423,"alloc::string"],[424,"core::result"],[425,"core::any"],[426,"penrose::core"],[427,"penrose::x::event"],[428,"core::hash"],[429,"alloc::boxed"],[430,"alloc::vec"],[431,"core::time"],[432,"core::ops::function"],[433,"std::sync::mutex"],[434,"alloc::sync"],[435,"penrose_ui::bar::widgets::workspaces"],[436,"penrose_ui::bar::widgets::simple"],[437,"core::clone"],[438,"core::cmp"],[439,"core::marker"],[440,"penrose::pure::geometry"],[441,"penrose::core::layout"],[442,"penrose::pure::stack"]],"i":[0,0,17,0,3,3,3,17,3,3,0,0,0,0,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,0,3,0,3,3,3,3,74,75,15,0,0,0,15,16,30,15,16,30,15,16,15,15,15,0,30,15,16,30,15,16,15,30,15,16,0,30,16,0,0,0,15,30,15,16,30,15,16,16,16,30,15,16,0,0,0,37,37,37,37,37,37,37,37,37,0,0,0,0,48,48,0,0,0,0,48,0,0,0,0,0,43,44,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,45,46,47,48,44,49,50,40,45,46,47,48,44,49,50,40,43,44,34,54,55,45,46,47,50,40,0,34,54,55,45,46,47,50,40,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,48,54,55,45,46,47,48,44,49,49,50,40,40,40,54,55,45,46,47,48,44,49,50,40,34,54,55,45,46,47,50,40,59,54,55,45,46,47,50,40,50,49,34,45,46,34,34,54,46,47,50,34,50,34,54,55,45,46,47,50,40,40,0,49,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,43,43,43,43,34,55,0,0,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,65,53,14,65,53,53,14,14,65,65,65,53,53,65,14,14,53,53,53,65,53,14,65,53,14,65,53,14,65,53,65,65,14,53,65,53,53,53,53,14,53,14,65,53,14,65,53,14,65,53,0,70,70,70,70,70,70,70,70,70,70,70],"f":"````````````````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}`{{{b{f}}{b{dh}}}j}0{cc{}}{lf}{nf}{A`f}{ce{}{}}`{{{b{f}}}{{Ad{{b{Ab}}}}}}{{Af{b{Ah}}AjAlceAn}{{Bb{{B`{g}}}}}{{Bf{Bd}}}{{Bf{Bd}}}Bh}{{{b{c}}}Bj{}}{c{{Bl{e}}}{}{}}0{{{b{c}}}Bn{}}```````{{{B`{c}}{C`{c}}}{{C`{c}}}Bh}===<<<{{{b{An}}}An}{{{b{c}}{b{de}}}Cb{}{}}{{{b{An}}{b{An}}}Cd}{{{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Cj{Cd}}}Bh}{{{b{{Cl{c}}}}{b{dh}}}jBh}{{{b{An}}{b{dh}}}j}{{{b{{B`{c}}}}{b{dh}}}j{CnBh}}{cc{}}00{{{b{An}}{b{dc}}}CbD`}???{{Db{b{d{Ch{c}}}}{b{c}}}{{Cj{Cb}}}Bh}{{AjAf{Dh{{Df{Dd}}}}}{{Cl{c}}}Bh}{{{b{d{B`{c}}}}}{{Bb{Cb}}}Bh}{{{b{d{Ch{c}}}}{b{c}}}{{Cj{Cb}}}Bh}`0{{{b{c}}}e{}{}}{c{{Bl{e}}}{}{}}00000{{AnAfc{b{Ah}}Aj{Dh{{Df{Dd}}}}}{{Bb{{B`{e}}}}}{{Bf{Bd}}}Bh}{{Anc{b{Ah}}{Dh{{Cl{e}}}}}{{Bb{{B`{e}}}}}{{Bf{Bd}}}Bh}{{{b{c}}}Bn{}}00```{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Dj}}{b{dh}}}j}={ce{}{}}{{Dl{Df{Dn}}{Ed{{Eb{E`}}}}}Dj}885````````````````{{{b{Ef}}}Bd}{{{b{Eh}}}Bd}66666666665555555555{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{{b{Eh}}}Eh}{{{b{Fb}}}Fb}{{{b{{Fd{c}}}}}{{Fd{c}}}{EfFf}}{{{b{E`}}}E`}{{{b{c}}{b{de}}}Cb{}{}}0000000{{{b{Ef}}{b{Fb}}F`Cd}{{Fh{BdBd}}}}{{{b{Eh}}{b{Fb}}F`Cd}{{Fh{BdBd}}}}{{{b{dDd}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dFl}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dFn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEj}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEl}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{d{Fd{c}}}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}Ef}{{{b{dE`}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}`{{{b{dDd}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dFl}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dFn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEj}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEl}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{d{Fd{c}}}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}Ef}{{{b{dE`}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{Ej}}{b{Ej}}}Cd}{{{b{El}}{b{El}}}Cd}{{{b{En}}{b{En}}}Cd}{{{b{F`}}{b{F`}}}Cd}{{{b{Eh}}{b{Eh}}}Cd}{{{b{Fb}}{b{Fb}}}Cd}{{{b{{Fd{c}}}}{b{{Fd{c}}}}}Cd{EfGb}}{{{b{E`}}{b{E`}}}Cd}{{{b{Fl}}{b{dh}}}j}{{{b{Fn}}{b{dh}}}j}{{{b{Ej}}{b{dh}}}j}{{{b{El}}{b{dh}}}j}{{{b{En}}{b{dh}}}j}{{{b{F`}}{b{dh}}}j}{{{b{Eh}}{b{dh}}}j}{{{b{Fb}}{b{dh}}}j}{{{b{{Fd{c}}}}{b{dh}}}j{EfCn}}{{{b{E`}}{b{dh}}}j}{{{b{F`}}}Cd}{cc{}}0000000{{{b{Gd}}}Fb}11{{{b{E`}}}{{b{Bj}}}}{{{b{dE`}}}{{b{dBj}}}}{ce{}{}}000000000{{{b{Dd}}}Cd}{{{b{Fl}}}Cd}{{{b{Fn}}}Cd}{{{b{Ej}}}Cd}{{{b{El}}}Cd}{{{b{En}}}Cd}{{{b{{Fd{c}}}}}CdEf}{{{b{E`}}}Cd}{{Alce}Gf{{Bf{Bd}}}{{Bf{Bd}}}}{{Alc}Fl{{Dn{}{{Gh{Bj}}}}}}{{AlcDl}Fn{{Dn{}{{Gh{{Ad{Bj}}}}}}Gj}}{{AlCdCd}Ej}{{G`AlCdCd}El}{AlEn}{{Alce}{{Fd{Eh}}}{{Bf{Bd}}}{{Bf{Bd}}}}{{cAlCdCd}E`{{Bf{Bj}}}}{c{{Fd{c}}}Ef}{{{b{Fb}}}Cd}{{{b{dDd}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEj}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEl}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dDd}}Db{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dDd}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dFl}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEl}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEn}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{d{Fd{c}}}}{b{d{Ch{e}}}}{b{e}}}{{Bb{Cb}}}EfBh}40{{{b{Dd}}}Cd}{{{b{Fl}}}Cd}{{{b{Fn}}}Cd}{{{b{Ej}}}Cd}{{{b{El}}}Cd}{{{b{En}}}Cd}{{{b{{Fd{c}}}}}CdEf}{{{b{E`}}}Cd}{{{b{dE`}}c}Cb{{Bf{Bj}}}}`{{{b{Fb}}}{{b{Ah}}}}{{{b{c}}}e{}{}}0000000{c{{Bl{e}}}{}{}}0000000000000000000{{{b{c}}}Bn{}}000000000{{{b{Ef}}{b{Fb}}}Bj}0{{{b{dEf}}{b{{Gl{Fb}}}}{b{{Gl{Bj}}}}{b{{Ch{c}}}}{b{c}}}CdBh}0{{{b{dDd}}}{{Ad{Dj}}}}{{{b{dFn}}}{{Ad{Dj}}}}``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{c}}{b{de}}}Cb{}{}}0{{{b{dGn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dH`}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dGn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dH`}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{Gn}}{b{Gn}}}Cd}{{{b{H`}}{b{H`}}}Cd}{{{b{Gn}}{b{dh}}}j}{{{b{H`}}{b{dh}}}j}{cc{}}0{ce{}{}}0{{{b{Gn}}}Cd}{{{b{H`}}}Cd}{{AlCdCd}Gn}{AlH`}{{{b{dGn}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dH`}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}54{{{b{c}}}e{}{}}0{c{{Bl{e}}}{}{}}000{{{b{c}}}Bn{}}0```{{{b{Ah}}}{{Ad{Bj}}}}{{}{{Ad{Bj}}}}100{{{b{Ah}}AlDl}Fn}0{{AlDl}Fn}0{{{b{Ah}}Al}Fl}0{AlFl}0````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{dFj}}}{{Bb{Cb}}}}{{{b{Al}}}Al}{{{b{c}}{b{de}}}Cb{}{}}{{{b{Hb}}}{{b{{`{Bh}}}}}}{{{b{dHb}}Db}{{Bb{Fj}}}}{{{b{dHb}}Db}{{Bb{Cb}}}}{{{b{dFj}}HdBd}{{Bb{Cb}}}}{{{b{dFj}}{b{Ah}}Af{Fh{AfAf}}Bd}{{Bb{{Fh{AfAf}}}}}}{{{b{dHb}}}Cb}{{{b{Al}}{b{Al}}}Cd}`{{{b{dFj}}Hd}{{Bb{Cb}}}}{{{b{dFj}}{b{{Gl{Hf}}}}Bd}{{Bb{Cb}}}}5{{{b{Hb}}Db}{{Bb{Cb}}}}{{{b{Fj}}}Cb}{{{b{Al}}{b{dh}}}j}{{{b{Hb}}{b{dh}}}j}{{{b{Fj}}{b{dh}}}j}{cc{}}00{ce{}{}}00{{{b{Ah}}Ajc}{{Bb{Hb}}}{{Bf{Bd}}}}{{{b{dHb}}HhHdCd}{{Bb{Db}}}}`{{{b{dFj}}}Cb}{{{b{dHb}}{b{Ah}}Aj}{{Bb{Cb}}}}{{{b{dFj}}HjHj}Cb}{{{b{dFj}}Hj}Cb}0{{{b{dFj}}{b{Ah}}}{{Bb{{Fh{AfAf}}}}}}{{{b{c}}}e{}{}}3{c{{Bl{e}}}{}{}}00000{{{b{c}}}Bn{}}00`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Hl}}{b{dh}}}j}>={{Hdcegi}{{Bb{Hl}}}{{Bf{Bd}}}{{Bf{Bd}}}{{Bf{Bd}}}{{Bf{Bd}}}}{{{b{dHl}}{b{d{Df{Hn}}}}{b{{I`{Db}}}}Ib}{{Bb{Cb}}}}{{{b{dHl}}{I`{Db}}{b{{Gl{{Df{Hn}}}}}}AfIb}{{Bb{Cb}}}}776","D":"AFh","p":[[1,"reference"],[0,"mut"],[6,"Error",0],[5,"Formatter",415],[8,"Result",415],[6,"Error",416],[5,"NulError",417],[5,"ParseIntError",418],[10,"Error",419],[6,"Option",420],[1,"u32"],[1,"str"],[1,"u8"],[5,"TextStyle",348],[6,"Position",39],[5,"StatusBar",39],[8,"Result",0],[5,"Color",416],[10,"Into",421],[10,"XConn",422],[5,"String",423],[6,"Result",424],[5,"TypeId",425],[5,"WindowManager",426],[1,"unit"],[1,"bool"],[6,"XEvent",427],[5,"State",426],[8,"Result",416],[5,"PerScreen",39],[10,"Debug",415],[10,"Hasher",428],[5,"Xid",426],[10,"Widget",95],[5,"Box",429],[5,"Vec",430],[5,"UpdateSchedule",84],[5,"Duration",431],[10,"Fn",432],[5,"Text",95],[5,"Mutex",433],[5,"Arc",434],[10,"WorkspacesUi",95,435],[5,"DefaultUi",95,435],[5,"RootWindowName",95,436],[5,"ActiveWindowName",95,436],[5,"CurrentLayout",95,436],[6,"FocusState",95,435],[5,"WsMeta",95,435],[5,"WorkspacesWidget",95,435],[10,"Clone",437],[1,"tuple"],[5,"Context",348],[5,"RefreshText",95],[5,"IntervalText",95],[1,"usize"],[10,"PartialEq",438],[8,"ClientSpace",426],[8,"Workspaces",95,435],[17,"Output"],[10,"Send",439],[1,"slice"],[5,"ActiveWindowId",294],[5,"StateSummary",294],[5,"Draw",348],[5,"Rect",440],[5,"Point",440],[6,"WinType",422],[1,"i32"],[5,"LayoutViewer",403],[10,"Layout",441],[5,"Stack",442],[1,"u64"],[15,"InvalidHexColor",37],[15,"UnintialisedSurface",37]],"r":[[0,348],[1,348],[10,39],[12,39],[13,348],[95,436],[96,436],[97,435],[98,435],[103,436],[107,435],[108,435],[109,435],[110,435]],"b":[[23,"impl-Debug-for-Error"],[24,"impl-Display-for-Error"],[26,"impl-From%3CError%3E-for-Error"],[27,"impl-From%3CNulError%3E-for-Error"],[28,"impl-From%3CParseIntError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAOsAJgABAAEACwAAAA0AAQAVAAEAGAABABsAAgAgAAAAIgADAC4ACAA4AAIAPgAAAEgABgBRAAIAVwACAF0AAgBxACQAlwAAAJkABgCiABgAxAAAANQABgDmAAEA6gADAO8AAADxAAYA+wAlACYBAAApAQ8APQEBAEEBCwBhAQUAaAEBAG8BAQB3AQIAiQEAAIsBCACVAQIAnQECAA=="}]\ +["penrose_ui",{"t":"EEPGPPPPPPEIEEPPPPPCNNCNNNNNNNCNHNNNNOOPFGFPNNNNNNNNNNHNNNNNNNNNNHNNHCHNNNNNNNNNNNNCSFNNNNNNNNNFFFGPPFFFFPKIKFFMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNCMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCHHHHHHHHHHHHHFFFONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNFNNNNNNNNNNN","n":["Context","Draw","Err","Error","InvalidHexColor","NoFallbackFontForChar","NulError","Ok","ParseInt","Penrose","Position","Result","StatusBar","TextStyle","UnableToAllocateColor","UnableToOpenFont","UnableToOpenFontPattern","UnableToParseFontPattern","UnintialisedSurface","bar","borrow","borrow_mut","core","fmt","fmt","from","from","from","from","into","layout_viewer","source","status_bar","to_string","try_from","try_into","type_id","code","id","Bottom","PerScreen","Position","StatusBar","Top","add_to","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","event_hook","fmt","fmt","fmt","from","from","from","hash","into","into","into","manage_hook","new","redraw","refresh_hook","schedule","startup_hook","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","try_new","try_new_per_screen","type_id","type_id","type_id","widgets","MIN_DURATION","UpdateSchedule","borrow","borrow_mut","fmt","from","into","new","try_from","try_into","type_id","ActiveWindowName","CurrentLayout","DefaultUi","FocusState","FocusedOnOtherScreen","FocusedOnThisScreen","IntervalText","RefreshText","RootWindowName","Text","Unfocused","Widget","Workspaces","WorkspacesUi","WorkspacesWidget","WsMeta","background_color","background_color","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","colors_for_workspace","colors_for_workspace","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","current_extent","debug","draw","draw","draw","draw","draw","draw","draw","draw","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","focused","from","from","from","from","from","from","from","from","from","from","from","get_text","get_text_mut","into","into","into","into","into","into","into","into","into","into","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","is_greedy","new","new","new","new","new","new","new","new","new_with_ui","occupied","on_event","on_event","on_event","on_new_client","on_refresh","on_refresh","on_refresh","on_refresh","on_refresh","on_startup","on_startup","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","require_draw","set_text","sys","tag","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","ui_tag","ui_tag","update_from_state","update_from_state","update_schedule","update_schedule","ActiveWindowId","StateSummary","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","current_extent","current_extent","draw","draw","eq","eq","fmt","fmt","from","from","into","into","is_greedy","is_greedy","new","new","on_refresh","on_refresh","require_draw","require_draw","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","helpers","interval","refresh","amixer_text","battery_file_search","battery_text","date_text","wifi_text","amixer_volume","battery_summary","current_date_and_time","wifi_network","amixer_volume","battery_summary","current_date_and_time","wifi_network","Context","Draw","TextStyle","bg","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone_into","conn","context_for","destroy_window_and_surface","draw_rect","draw_text","drop","eq","fg","fill_bg","fill_polygon","fill_rect","flush","flush","fmt","fmt","fmt","from","from","from","into","into","into","new","new_window","padding","reset_offset","set_font","set_offset","set_x_offset","set_y_offset","text_extent","to_owned","translate","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","LayoutViewer","borrow","borrow_mut","fmt","from","into","new","render_layout_with_stack","showcase_layouts","try_from","try_into","type_id"],"q":[[0,"penrose_ui"],[37,"penrose_ui::Error"],[39,"penrose_ui::bar"],[84,"penrose_ui::bar::schedule"],[95,"penrose_ui::bar::widgets"],[294,"penrose_ui::bar::widgets::debug"],[332,"penrose_ui::bar::widgets::sys"],[335,"penrose_ui::bar::widgets::sys::helpers"],[340,"penrose_ui::bar::widgets::sys::interval"],[344,"penrose_ui::bar::widgets::sys::refresh"],[348,"penrose_ui::core"],[403,"penrose_ui::layout_viewer"],[415,"core::fmt"],[416,"alloc::ffi::c_str"],[417,"penrose"],[418,"core::num::error"],[419,"core::error"],[420,"core::option"],[421,"core::convert"],[422,"penrose::x"],[423,"alloc::string"],[424,"core::result"],[425,"core::any"],[426,"penrose::core"],[427,"penrose::x::event"],[428,"core::hash"],[429,"alloc::boxed"],[430,"alloc::vec"],[431,"core::time"],[432,"core::ops::function"],[433,"std::sync::mutex"],[434,"alloc::sync"],[435,"penrose_ui::bar::widgets::workspaces"],[436,"penrose_ui::bar::widgets::simple"],[437,"core::clone"],[438,"core::cmp"],[439,"core::marker"],[440,"penrose::pure::geometry"],[441,"penrose::core::layout"],[442,"penrose::pure::stack"]],"i":[0,0,17,0,3,3,3,17,3,3,0,0,0,0,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,0,3,0,3,3,3,3,74,75,15,0,0,0,15,16,30,15,16,30,15,16,15,15,15,0,30,15,16,30,15,16,15,30,15,16,0,30,16,0,0,0,15,30,15,16,30,15,16,16,16,30,15,16,0,0,0,37,37,37,37,37,37,37,37,37,0,0,0,0,48,48,0,0,0,0,48,0,0,0,0,0,43,44,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,45,46,47,48,44,49,50,40,45,46,47,48,44,49,50,40,43,44,34,54,55,45,46,47,50,40,0,34,54,55,45,46,47,50,40,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,48,54,55,45,46,47,48,44,49,49,50,40,40,40,54,55,45,46,47,48,44,49,50,40,34,54,55,45,46,47,50,40,59,54,55,45,46,47,50,40,50,49,34,45,46,34,34,54,46,47,50,34,50,34,54,55,45,46,47,50,40,40,0,49,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,54,55,45,46,47,48,44,49,50,40,43,43,43,43,34,55,0,0,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,65,53,14,65,53,53,14,14,65,65,65,53,53,65,14,14,53,53,53,65,53,14,65,53,14,65,53,14,65,53,65,65,14,53,65,53,53,53,53,14,53,14,65,53,14,65,53,14,65,53,0,70,70,70,70,70,70,70,70,70,70,70],"f":"````````````````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}`{{{b{f}}{b{dh}}}j}0{lf}{nf}{A`f}{cc{}}{ce{}{}}`{{{b{f}}}{{Ad{{b{Ab}}}}}}{{Af{b{Ah}}AjAlceAn}{{Bb{{B`{g}}}}}{{Bf{Bd}}}{{Bf{Bd}}}Bh}{{{b{c}}}Bj{}}{c{{Bl{e}}}{}{}}0{{{b{c}}}Bn{}}```````{{{B`{c}}{C`{c}}}{{C`{c}}}Bh}===<<<{{{b{An}}}An}{{{b{c}}{b{de}}}Cb{}{}}{{{b{An}}{b{An}}}Cd}{{{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Cj{Cd}}}Bh}{{{b{{Cl{c}}}}{b{dh}}}jBh}{{{b{An}}{b{dh}}}j}{{{b{{B`{c}}}}{b{dh}}}j{CnBh}}>>>{{{b{An}}{b{dc}}}CbD`}>>>{{Db{b{d{Ch{c}}}}{b{c}}}{{Cj{Cb}}}Bh}{{AjAf{Dh{{Df{Dd}}}}}{{Cl{c}}}Bh}{{{b{d{B`{c}}}}}{{Bb{Cb}}}Bh}{{{b{d{Ch{c}}}}{b{c}}}{{Cj{Cb}}}Bh}`0{{{b{c}}}e{}{}}??????{{AnAfc{b{Ah}}Aj{Dh{{Df{Dd}}}}}{{Bb{{B`{e}}}}}{{Bf{Bd}}}Bh}{{Anc{b{Ah}}{Dh{{Cl{e}}}}}{{Bb{{B`{e}}}}}{{Bf{Bd}}}Bh}{{{b{c}}}Bn{}}00```{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Dj}}{b{dh}}}j}{cc{}}{ce{}{}}{{Dl{Df{Dn}}{Ed{{Eb{E`}}}}}Dj}{c{{Bl{e}}}{}{}}07````````````````{{{b{Ef}}}Bd}{{{b{Eh}}}Bd}88888888887777777777{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{{b{Eh}}}Eh}{{{b{Fb}}}Fb}{{{b{{Fd{c}}}}}{{Fd{c}}}{EfFf}}{{{b{E`}}}E`}{{{b{c}}{b{de}}}Cb{}{}}0000000{{{b{Ef}}{b{Fb}}F`Cd}{{Fh{BdBd}}}}{{{b{Eh}}{b{Fb}}F`Cd}{{Fh{BdBd}}}}{{{b{dDd}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dFl}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dFn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEj}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEl}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dEn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{d{Fd{c}}}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}Ef}{{{b{dE`}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}`{{{b{dDd}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dFl}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dFn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEj}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEl}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dEn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{d{Fd{c}}}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}Ef}{{{b{dE`}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{Ej}}{b{Ej}}}Cd}{{{b{El}}{b{El}}}Cd}{{{b{En}}{b{En}}}Cd}{{{b{F`}}{b{F`}}}Cd}{{{b{Eh}}{b{Eh}}}Cd}{{{b{Fb}}{b{Fb}}}Cd}{{{b{{Fd{c}}}}{b{{Fd{c}}}}}Cd{EfGb}}{{{b{E`}}{b{E`}}}Cd}{{{b{Fl}}{b{dh}}}j}{{{b{Fn}}{b{dh}}}j}{{{b{Ej}}{b{dh}}}j}{{{b{El}}{b{dh}}}j}{{{b{En}}{b{dh}}}j}{{{b{F`}}{b{dh}}}j}{{{b{Eh}}{b{dh}}}j}{{{b{Fb}}{b{dh}}}j}{{{b{{Fd{c}}}}{b{dh}}}j{EfCn}}{{{b{E`}}{b{dh}}}j}{{{b{F`}}}Cd}{cc{}}000000{{{b{Gd}}}Fb}111{{{b{E`}}}{{b{Bj}}}}{{{b{dE`}}}{{b{dBj}}}}{ce{}{}}000000000{{{b{Dd}}}Cd}{{{b{Fl}}}Cd}{{{b{Fn}}}Cd}{{{b{Ej}}}Cd}{{{b{El}}}Cd}{{{b{En}}}Cd}{{{b{{Fd{c}}}}}CdEf}{{{b{E`}}}Cd}{{Alce}Gf{{Bf{Bd}}}{{Bf{Bd}}}}{{Alc}Fl{{Dn{}{{Gh{Bj}}}}}}{{AlcDl}Fn{{Dn{}{{Gh{{Ad{Bj}}}}}}Gj}}{{AlCdCd}Ej}{{G`AlCdCd}El}{AlEn}{{Alce}{{Fd{Eh}}}{{Bf{Bd}}}{{Bf{Bd}}}}{{cAlCdCd}E`{{Bf{Bj}}}}{c{{Fd{c}}}Ef}{{{b{Fb}}}Cd}{{{b{dDd}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEj}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEl}}{b{Cf}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dDd}}Db{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dDd}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dFl}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEl}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dEn}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{d{Fd{c}}}}{b{d{Ch{e}}}}{b{e}}}{{Bb{Cb}}}EfBh}40{{{b{Dd}}}Cd}{{{b{Fl}}}Cd}{{{b{Fn}}}Cd}{{{b{Ej}}}Cd}{{{b{El}}}Cd}{{{b{En}}}Cd}{{{b{{Fd{c}}}}}CdEf}{{{b{E`}}}Cd}{{{b{dE`}}c}Cb{{Bf{Bj}}}}`{{{b{Fb}}}{{b{Ah}}}}{{{b{c}}}e{}{}}0000000{c{{Bl{e}}}{}{}}0000000000000000000{{{b{c}}}Bn{}}000000000{{{b{Ef}}{b{Fb}}}Bj}0{{{b{dEf}}{b{{Gl{Fb}}}}{b{{Gl{Bj}}}}{b{{Ch{c}}}}{b{c}}}CdBh}0{{{b{dDd}}}{{Ad{Dj}}}}{{{b{dFn}}}{{Ad{Dj}}}}``{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{c}}{b{de}}}Cb{}{}}0{{{b{dGn}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dH`}}{b{dFj}}Af}{{Bb{{Fh{AfAf}}}}}}{{{b{dGn}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{dH`}}{b{dFj}}G`CdAfAf}{{Bb{Cb}}}}{{{b{Gn}}{b{Gn}}}Cd}{{{b{H`}}{b{H`}}}Cd}{{{b{Gn}}{b{dh}}}j}{{{b{H`}}{b{dh}}}j}{cc{}}0{ce{}{}}0{{{b{Gn}}}Cd}{{{b{H`}}}Cd}{{AlCdCd}Gn}{AlH`}{{{b{dGn}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}{{{b{dH`}}{b{d{Ch{c}}}}{b{c}}}{{Bb{Cb}}}Bh}54{{{b{c}}}e{}{}}0{c{{Bl{e}}}{}{}}000{{{b{c}}}Bn{}}0```{{{b{Ah}}}{{Ad{Bj}}}}{{}{{Ad{Bj}}}}100{{{b{Ah}}AlDl}Fn}0{{AlDl}Fn}0{{{b{Ah}}Al}Fl}0{AlFl}0````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{dFj}}}{{Bb{Cb}}}}{{{b{Al}}}Al}{{{b{c}}{b{de}}}Cb{}{}}{{{b{Hb}}}{{b{{`{Bh}}}}}}{{{b{dHb}}Db}{{Bb{Fj}}}}{{{b{dHb}}Db}{{Bb{Cb}}}}{{{b{dFj}}HdBd}{{Bb{Cb}}}}{{{b{dFj}}{b{Ah}}Af{Fh{AfAf}}Bd}{{Bb{{Fh{AfAf}}}}}}{{{b{dHb}}}Cb}{{{b{Al}}{b{Al}}}Cd}`{{{b{dFj}}Hd}{{Bb{Cb}}}}{{{b{dFj}}{b{{Gl{Hf}}}}Bd}{{Bb{Cb}}}}5{{{b{Hb}}Db}{{Bb{Cb}}}}{{{b{Fj}}}Cb}{{{b{Al}}{b{dh}}}j}{{{b{Hb}}{b{dh}}}j}{{{b{Fj}}{b{dh}}}j}{cc{}}00{ce{}{}}00{{{b{Ah}}Ajc}{{Bb{Hb}}}{{Bf{Bd}}}}{{{b{dHb}}HhHdCd}{{Bb{Db}}}}`{{{b{dFj}}}Cb}{{{b{dHb}}{b{Ah}}Aj}{{Bb{Cb}}}}{{{b{dFj}}HjHj}Cb}{{{b{dFj}}Hj}Cb}0{{{b{dFj}}{b{Ah}}}{{Bb{{Fh{AfAf}}}}}}{{{b{c}}}e{}{}}3{c{{Bl{e}}}{}{}}00000{{{b{c}}}Bn{}}00`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Hl}}{b{dh}}}j}>={{Hdcegi}{{Bb{Hl}}}{{Bf{Bd}}}{{Bf{Bd}}}{{Bf{Bd}}}{{Bf{Bd}}}}{{{b{dHl}}{b{d{Df{Hn}}}}{b{{I`{Db}}}}Ib}{{Bb{Cb}}}}{{{b{dHl}}{I`{Db}}{b{{Gl{{Df{Hn}}}}}}AfIb}{{Bb{Cb}}}}776","D":"AFh","p":[[1,"reference"],[0,"mut"],[6,"Error",0],[5,"Formatter",415],[8,"Result",415],[5,"NulError",416],[6,"Error",417],[5,"ParseIntError",418],[10,"Error",419],[6,"Option",420],[1,"u32"],[1,"str"],[1,"u8"],[5,"TextStyle",348],[6,"Position",39],[5,"StatusBar",39],[8,"Result",0],[5,"Color",417],[10,"Into",421],[10,"XConn",422],[5,"String",423],[6,"Result",424],[5,"TypeId",425],[5,"WindowManager",426],[1,"unit"],[1,"bool"],[6,"XEvent",427],[5,"State",426],[8,"Result",417],[5,"PerScreen",39],[10,"Debug",415],[10,"Hasher",428],[5,"Xid",426],[10,"Widget",95],[5,"Box",429],[5,"Vec",430],[5,"UpdateSchedule",84],[5,"Duration",431],[10,"Fn",432],[5,"Text",95],[5,"Mutex",433],[5,"Arc",434],[10,"WorkspacesUi",95,435],[5,"DefaultUi",95,435],[5,"RootWindowName",95,436],[5,"ActiveWindowName",95,436],[5,"CurrentLayout",95,436],[6,"FocusState",95,435],[5,"WsMeta",95,435],[5,"WorkspacesWidget",95,435],[10,"Clone",437],[1,"tuple"],[5,"Context",348],[5,"RefreshText",95],[5,"IntervalText",95],[1,"usize"],[10,"PartialEq",438],[8,"ClientSpace",426],[8,"Workspaces",95,435],[17,"Output"],[10,"Send",439],[1,"slice"],[5,"ActiveWindowId",294],[5,"StateSummary",294],[5,"Draw",348],[5,"Rect",440],[5,"Point",440],[6,"WinType",422],[1,"i32"],[5,"LayoutViewer",403],[10,"Layout",441],[5,"Stack",442],[1,"u64"],[15,"InvalidHexColor",37],[15,"UnintialisedSurface",37]],"r":[[0,348],[1,348],[10,39],[12,39],[13,348],[95,436],[96,436],[97,435],[98,435],[103,436],[107,435],[108,435],[109,435],[110,435]],"b":[[23,"impl-Display-for-Error"],[24,"impl-Debug-for-Error"],[25,"impl-From%3CNulError%3E-for-Error"],[26,"impl-From%3CError%3E-for-Error"],[27,"impl-From%3CParseIntError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAOsAJQABAAEACwAAAA0AAQAVAAEAGAAEACAAAAAiAAMALgAIADgAAgA+AAAASAAGAFEAAgBXAAIAXQACAHEAJACXAAAAmQAGAKIAGADDAAAA1AAGAOYAAQDqAAMA7wAAAPEABgD7ACUAJgEAACkBDwA9AQEAQQELAGEBBQBoAQEAbwEBAHcBAgCJAQAAiwEIAJUBAgCdAQIA"}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/rustdoc/src/penrose/extensions/actions/mod.rs.html b/rustdoc/src/penrose/extensions/actions/mod.rs.html index d31a0dd4..added310 100644 --- a/rustdoc/src/penrose/extensions/actions/mod.rs.html +++ b/rustdoc/src/penrose/extensions/actions/mod.rs.html @@ -156,6 +156,7 @@ 156 157 158 +159
//! Helpers and pre-defined actions for use in user defined key bindings
 use crate::{
     builtin::actions::{key_handler, modify_with},
@@ -164,7 +165,7 @@
     x::{atom::Atom, property::Prop, XConn, XConnExt},
     Error, Result, Xid,
 };
-use tracing::error;
+use tracing::{debug, error};
 
 mod dynamic_select;
 
@@ -200,6 +201,7 @@
     };
 
     let currently_fullscreen = wstate.contains(&full_screen);
+    debug!(%currently_fullscreen, ?action, %id, "setting fullscreen state");
 
     if action == Add || (action == Toggle && !currently_fullscreen) {
         let r = state
@@ -209,7 +211,7 @@
             .r;
         state.client_set.float(id, r)?;
         wstate.push(*full_screen);
-    } else if action == Remove || (action == Toggle && currently_fullscreen) {
+    } else if currently_fullscreen && (action == Remove || action == Toggle) {
         state.client_set.sink(&id);
         wstate.retain(|&val| val != *full_screen);
     }
@@ -244,7 +246,7 @@
 /// DefaultWorkspace hook that allows for auto populating named Workspaces when first focusing them.
 ///
 /// > If you just want to dynamically select an existing workspace then you can use
-/// [switch_to_workspace] to select from known workspace names.
+/// > [switch_to_workspace] to select from known workspace names.
 ///
 ///   [0]: crate::pure::Workspace
 pub fn create_or_switch_to_workspace<X>(
diff --git a/rustdoc/src/penrose/extensions/hooks/ewmh.rs.html b/rustdoc/src/penrose/extensions/hooks/ewmh.rs.html
index 1523de7b..3dd5e713 100644
--- a/rustdoc/src/penrose/extensions/hooks/ewmh.rs.html
+++ b/rustdoc/src/penrose/extensions/hooks/ewmh.rs.html
@@ -269,6 +269,8 @@
 269
 270
 271
+272
+273
 
//! EWMH compliance for Penrose
 //!
 //! The primary use of this extension is to provide support for external
@@ -287,7 +289,7 @@
     },
     Result, Xid,
 };
-use tracing::warn;
+use tracing::{debug, warn};
 
 /// The set of Atoms this extension adds support for.
 ///
@@ -366,6 +368,8 @@
         _ => return Ok(true),
     };
 
+    debug!(?dtype, "processing client message in ewmh hook");
+
     match dtype.as_ref() {
         // Focus the requested desktop
         "_NET_CURRENT_DESKTOP" => {
diff --git a/rustdoc/src/penrose/pure/stack_set.rs.html b/rustdoc/src/penrose/pure/stack_set.rs.html
index 9464ca1a..e09ea0bc 100644
--- a/rustdoc/src/penrose/pure/stack_set.rs.html
+++ b/rustdoc/src/penrose/pure/stack_set.rs.html
@@ -1615,6 +1615,8 @@
 1615
 1616
 1617
+1618
+1619
 
use crate::{
     core::layout::LayoutStack,
     pop_where,
@@ -1632,6 +1634,7 @@
     hash::Hash,
     mem::{swap, take},
 };
+use tracing::debug;
 
 /// The side-effect free internal state representation of the window manager.
 #[derive(Default, Debug, Clone)]
@@ -1876,6 +1879,7 @@
     pub(crate) fn float_unchecked<R: RelativeTo>(&mut self, client: C, r: R) {
         let screen = self.screen_for_client(&client).expect("client to be known");
         let r = r.relative_to(&screen.r);
+        debug!(?r, "setting floating position");
         self.floating.insert(client, r);
     }
 
diff --git a/rustdoc/src/penrose/util.rs.html b/rustdoc/src/penrose/util.rs.html
index fd00b2d5..52489905 100644
--- a/rustdoc/src/penrose/util.rs.html
+++ b/rustdoc/src/penrose/util.rs.html
@@ -182,7 +182,7 @@
     io::Read,
     process::{Command, Stdio},
 };
-use tracing::debug;
+use tracing::trace;
 
 /// Run an external command
 ///
@@ -232,7 +232,7 @@
 /// > output of a process that you spawn.
 pub fn spawn_for_output<S: Into<String>>(cmd: S) -> std::io::Result<String> {
     let cmd = cmd.into();
-    debug!(?cmd, "spawning subprocess for output");
+    trace!(?cmd, "spawning subprocess for output");
     let parts: Vec<&str> = cmd.split_whitespace().collect();
     let result = if parts.len() > 1 {
         Command::new(parts[0])
@@ -243,7 +243,7 @@
         Command::new(parts[0]).stdout(Stdio::piped()).spawn()
     };
 
-    debug!(?cmd, "reading output");
+    trace!(?cmd, "reading output");
     let mut child = result?;
     let mut buff = String::new();
     child
@@ -265,13 +265,13 @@
 ) -> std::io::Result<String> {
     let cmd = cmd.into();
 
-    debug!(?cmd, ?args, "spawning subprocess for output");
+    trace!(?cmd, ?args, "spawning subprocess for output");
     let mut child = Command::new(&cmd)
         .stdout(Stdio::piped())
         .args(args)
         .spawn()?;
 
-    debug!(?cmd, ?args, "reading output");
+    trace!(?cmd, ?args, "reading output");
     let mut buff = String::new();
     child
         .stdout
diff --git a/rustdoc/src/penrose/x/mod.rs.html b/rustdoc/src/penrose/x/mod.rs.html
index 802a7188..2ea44952 100644
--- a/rustdoc/src/penrose/x/mod.rs.html
+++ b/rustdoc/src/penrose/x/mod.rs.html
@@ -712,6 +712,18 @@
 712
 713
 714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
 
//! Logic for interacting with the X server
 use crate::{
     builtin::layout::messages::Hide,
@@ -726,7 +738,7 @@
 #[cfg(feature = "serde")]
 use serde::{Deserialize, Serialize};
 use std::collections::{HashMap, HashSet};
-use tracing::{error, trace};
+use tracing::{debug, error, trace};
 
 pub mod atom;
 pub mod event;
@@ -972,20 +984,21 @@
         trace!(%client, "fetching WmClass prop");
         if let Some(Prop::UTF8String(strs)) = self.get_prop(client, Atom::WmClass.as_ref())? {
             if strs.iter().any(|c| floating_classes.contains(c)) {
-                trace!(%client, ?floating_classes, "window has a floating class: setting to floating state");
+                debug!(%client, ?floating_classes, "window has a floating class: setting to floating state");
                 return Ok(true);
             }
         }
 
+        trace!(%client, "fetching NetWmWindowType prop");
+        let window_types = self.get_prop(client, Atom::NetWmWindowType.as_ref())?;
+        debug!(?window_types, "client window types");
+
         let float_types: Vec<&str> = AUTO_FLOAT_WINDOW_TYPES.iter().map(|a| a.as_ref()).collect();
 
-        trace!(%client, "fetching NetWmWindowType prop");
-        let p = self.get_prop(client, Atom::NetWmWindowType.as_ref())?;
-        let should_float = if let Some(Prop::Atom(atoms)) = p {
-            atoms.iter().any(|a| float_types.contains(&a.as_ref()))
-        } else {
-            false
-        };
+        let should_float = match window_types {
+            Some(Prop::Atom(atoms)) => atoms.iter().any(|a| float_types.contains(&a.as_ref())),
+            _ => false,
+        };
 
         Ok(should_float)
     }
@@ -1173,6 +1186,7 @@
                 .or(tag)
                 .map(|t| t.to_string());
 
+            debug!(%id, %parent, ?owned_tag, "client is transient");
             (owned_tag, Some(parent))
         }
 
@@ -1188,6 +1202,7 @@
     }
 
     if should_float {
+        debug!(%id, "client should float");
         let r = floating_client_position(id, transient_for, state, x)?;
         if state.client_set.float(id, r).is_err() {
             error!(%id, "attempted to float client which was not in state");
@@ -1203,6 +1218,10 @@
     }
     state.config.manage_hook = hook;
 
+    debug!(
+        floating=?state.client_set.floating, "floating clients"
+    );
+
     Ok(())
 }
 
@@ -1216,22 +1235,27 @@
     state: &State<X>,
     x: &X,
 ) -> Result<Rect> {
+    trace!(%id, "fetching client geometry");
     let r_initial = x.client_geometry(id)?;
+    debug!(?r_initial, "initial geometry");
 
     if (r_initial.x, r_initial.y) != (0, 0) {
+        debug!(?r_initial, "accepting client's requested position");
         return Ok(r_initial);
     }
 
-    let r_screen = transient_for
+    let r_parent = transient_for
         .and_then(|parent| state.client_set.screen_for_client(&parent))
         .unwrap_or(&state.client_set.screens.focus)
         .r;
+    debug!(?r_parent, "parent geometry");
 
-    let r_final = r_initial.centered_in(&r_screen).unwrap_or_else(|| {
+    let r_final = r_initial.centered_in(&r_parent).unwrap_or_else(|| {
         r_initial
             .centered_in(&state.client_set.screens.focus.r)
             .unwrap_or(r_initial)
     });
+    debug!(?r_final, "final geometry");
 
     Ok(r_final)
 }
diff --git a/rustdoc/src/penrose_ui/bar/schedule.rs.html b/rustdoc/src/penrose_ui/bar/schedule.rs.html
index fa606f1b..033aad29 100644
--- a/rustdoc/src/penrose_ui/bar/schedule.rs.html
+++ b/rustdoc/src/penrose_ui/bar/schedule.rs.html
@@ -112,7 +112,7 @@
     thread,
     time::{Duration, Instant},
 };
-use tracing::{debug, trace};
+use tracing::trace;
 
 /// The minimum allowed interval for an [UpdateSchedule].
 pub const MIN_DURATION: Duration = Duration::from_secs(1);
@@ -191,7 +191,7 @@
 /// their requested intervals.
 pub(crate) fn run_update_schedules(mut schedules: Vec<UpdateSchedule>) {
     thread::spawn(move || loop {
-        debug!("running UpdateSchedule updates for all pending widgets");
+        trace!("running UpdateSchedule updates for all pending widgets");
         while schedules[0].next < Instant::now() {
             schedules[0].update_text();
             schedules.sort_by(|a, b| a.next.cmp(&b.next));
@@ -202,7 +202,7 @@
         let _ = spawn_with_args("xsetroot", &["-name", ""]);
 
         let interval = schedules[0].next - Instant::now();
-        debug!(?interval, "sleeping until next update point");
+        trace!(?interval, "sleeping until next update point");
         thread::sleep(interval);
     });
 }
diff --git a/rustdoc/type.impl/core/result/enum.Result.js b/rustdoc/type.impl/core/result/enum.Result.js
index ebad7483..f8d8fa5e 100644
--- a/rustdoc/type.impl/core/result/enum.Result.js
+++ b/rustdoc/type.impl/core/result/enum.Result.js
@@ -1,4 +1,4 @@
 (function() {var type_impls = {
-"penrose":[["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","penrose::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","penrose::Result"],["
source§

impl<'de, T, E> Deserialize<'de> for Result<T, E>
where\n T: Deserialize<'de>,\n E: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","penrose::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","penrose::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","penrose::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","penrose::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","penrose::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","penrose::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","penrose::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
§Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","penrose::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual #91285)
The “return” type of this meta-function.
","Residual","penrose::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
§Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening #70142)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
§Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
§Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
§Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
§Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
§Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
§Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls a function with a reference to the contained value if Ok.

\n

Returns the original result.

\n
§Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls a function with a reference to the contained value if Err.

\n

Returns the original result.

\n
§Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
§Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
§Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
§Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
§Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
§Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
§Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
§Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
§Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
§Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
§Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
§Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
§Safety
\n

Calling this method on an Err is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
§Safety
\n

Calling this method on an Ok is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"penrose::Result"],["
source§

impl<T, E> Serialize for Result<T, E>
where\n T: Serialize,\n E: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","penrose::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
§Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","penrose::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","penrose::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from its Output type. Read more
source§

fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","penrose::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","penrose::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","penrose::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","penrose::Result"]], -"penrose_ui":[["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","penrose_ui::Result"],["
source§

impl<'de, T, E> Deserialize<'de> for Result<T, E>
where\n T: Deserialize<'de>,\n E: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","penrose_ui::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","penrose_ui::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose_ui::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","penrose_ui::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
§Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","penrose_ui::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual #91285)
The “return” type of this meta-function.
","Residual","penrose_ui::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
§Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening #70142)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
§Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
§Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
§Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
§Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
§Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
§Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls a function with a reference to the contained value if Ok.

\n

Returns the original result.

\n
§Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls a function with a reference to the contained value if Err.

\n

Returns the original result.

\n
§Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
§Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
§Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
§Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
§Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
§Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
§Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
§Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
§Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
§Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
§Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
§Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
§Safety
\n

Calling this method on an Err is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
§Safety
\n

Calling this method on an Ok is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Serialize for Result<T, E>
where\n T: Serialize,\n E: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","penrose_ui::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
§Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","penrose_ui::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","penrose_ui::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from its Output type. Read more
source§

fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","penrose_ui::Result"]] +"penrose":[["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","penrose::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","penrose::Result"],["
source§

impl<'de, T, E> Deserialize<'de> for Result<T, E>
where\n T: Deserialize<'de>,\n E: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","penrose::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","penrose::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","penrose::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","penrose::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","penrose::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","penrose::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","penrose::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
§Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","penrose::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual #91285)
The “return” type of this meta-function.
","Residual","penrose::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
§Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening #70142)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
§Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"penrose::Result"],["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
§Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
§Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
§Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
§Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
§Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls a function with a reference to the contained value if Ok.

\n

Returns the original result.

\n
§Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls a function with a reference to the contained value if Err.

\n

Returns the original result.

\n
§Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
§Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
§Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
§Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
§Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
§Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
§Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
§Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
§Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
§Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
§Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
§Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
§Safety
\n

Calling this method on an Err is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
§Safety
\n

Calling this method on an Ok is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"penrose::Result"],["
source§

impl<T, E> Serialize for Result<T, E>
where\n T: Serialize,\n E: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","penrose::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
§Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","penrose::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","penrose::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from its Output type. Read more
source§

fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","penrose::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","penrose::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","penrose::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","penrose::Result"]], +"penrose_ui":[["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","penrose_ui::Result"],["
source§

impl<'de, T, E> Deserialize<'de> for Result<T, E>
where\n T: Deserialize<'de>,\n E: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","penrose_ui::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","penrose_ui::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose_ui::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","penrose_ui::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
§Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","penrose_ui::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual #91285)
The “return” type of this meta-function.
","Residual","penrose_ui::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
§Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
§Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening #70142)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
§Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
§Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
§Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
§Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
§Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
§Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
§Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls a function with a reference to the contained value if Ok.

\n

Returns the original result.

\n
§Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls a function with a reference to the contained value if Err.

\n

Returns the original result.

\n
§Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
§Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
§Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
§Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
§Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
§Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
§Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
§Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
§Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
§Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
§Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible #61695)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
§Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
§Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
§Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
§Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
§Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
§Safety
\n

Calling this method on an Err is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
§Safety
\n

Calling this method on an Ok is undefined behavior.

\n
§Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"penrose_ui::Result"],["
source§

impl<T, E> Serialize for Result<T, E>
where\n T: Serialize,\n E: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","penrose_ui::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
§Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","penrose_ui::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","penrose_ui::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Constructs the type from its Output type. Read more
source§

fn branch(\n self,\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2 #84277)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","penrose_ui::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","penrose_ui::Result"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/rustdoc/type.impl/penrose/pure/struct.StackSet.js b/rustdoc/type.impl/penrose/pure/struct.StackSet.js index c275a3b8..42f863c2 100644 --- a/rustdoc/type.impl/penrose/pure/struct.StackSet.js +++ b/rustdoc/type.impl/penrose/pure/struct.StackSet.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"penrose":[["
source§

impl<C> Clone for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Clone,

source§

fn clone(&self) -> StackSet<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","penrose::core::ClientSet"],["
source§

impl<C> Debug for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","penrose::core::ClientSet"],["
source§

impl<C> Default for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Default,

source§

fn default() -> StackSet<C>

Returns the “default value” for a type. Read more
","Default","penrose::core::ClientSet"],["
source§

impl<C> StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash,

source

pub fn try_new<I, J, T>(\n layouts: LayoutStack,\n ws_tags: I,\n screen_details: J,\n) -> Result<Self>
where\n T: Into<String>,\n I: IntoIterator<Item = T>,\n J: IntoIterator<Item = Rect>,

Create a new StackSet of empty stacks with the given workspace names.

\n
§Errors
\n

This method will error if there are not enough workspaces to cover the\nattached screens or if no screens are attached.

\n
source

pub fn focus_screen(&mut self, screen_index: usize)

Set focus to the Screen with the specified index.

\n

If there is no matching screen then the StackSet is unmodified.

\n
source

pub fn focus_tag(&mut self, tag: impl AsRef<str>)

Set focus to the Workspace with the specified tag.

\n

If there is no matching workspace then the StackSet is unmodified.\nIf the Workspace is currently visible then focus moves to the screen\ncontaining that workspace, otherwise the workspace replaces whatever\nwas on the active screen.

\n

If you always want to focus the given tag on the active screen, see\nStackSet::pull_tag_to_screen instead.

\n
source

pub fn pull_tag_to_screen(&mut self, tag: impl AsRef<str>)

Focus the requested tag on the current screen, swapping the current\ntag with it.

\n
source

pub fn toggle_tag(&mut self)

Toggle focus back to the previously focused Workspace based on its tag

\n
source

pub fn focus_client(&mut self, client: &C)

Focus the given client and set its Workspace as current (see\nfocus_tag).

\n

If the client is unknown then this is a no-op.

\n
source

pub fn insert(&mut self, client: C)

Insert the given client to the current Stack in a default Position.

\n
source

pub fn insert_at(&mut self, pos: Position, client: C)

Insert the given client to the current Stack at the requested Position.\nIf the client is already present somewhere in the StackSet the stack_set is unmodified.

\n
source

pub fn sink(&mut self, client: &C) -> Option<Rect>

Clear the floating status of a client, returning its previous preferred\nscreen position if the client was known, otherwise None.

\n
source

pub fn is_floating(&self, client: &C) -> bool

Check whether a given client is currently floating.

\n
source

pub fn has_floating_windows(&self, tag: impl AsRef<str>) -> bool

Check whether a given tag currently has any floating windows present.

\n

Returns false if the tag given is unknown to this StackSet.

\n
source

pub fn remove_client(&mut self, client: &C) -> Option<C>

Delete a client from this StackSet.

\n
source

pub fn remove_focused(&mut self) -> Option<C>

Remove the currently focused client from this stack if there is one.

\n

The client is returned to the caller as Some(C) if there was one.

\n
source

pub fn kill_focused(&mut self)

Delete the currently focused client from this stack if there is one.

\n

The following diff will send a kill client message to this client on\nrefresh.

\n
source

pub fn move_focused_to_tag(&mut self, tag: impl AsRef<str>)

Move the focused client of the current Workspace to the focused position\nof the workspace matching the provided tag.

\n
source

pub fn move_focused_to_screen(&mut self, screen: usize)

Move the focused client of the current Workspace to the focused position\nof the workspace on Screen screen.

\n
source

pub fn move_client_to_tag(&mut self, client: &C, tag: impl AsRef<str>)

Move the given client to the focused position of the Workspace matching\nthe provided tag. If the client is already on the target workspace it is\nmoved to the focused position.

\n
source

pub fn move_client_to_current_tag(&mut self, client: &C)

Move the given client to the focused position of the current Workspace.\nIf the client is already on the target workspace it is moved to the focused position.

\n
source

pub fn contains_tag(&self, tag: &str) -> bool

Is the given tag present in the StackSet?

\n
source

pub fn ordered_tags(&self) -> Vec<String>

All Workspace tags in this StackSet order by their id that have not been\nmarked as being invisible.

\n
source

pub fn ordered_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

All Workspaces in this StackSet order by their id that have not been\nmarked as being invisible.

\n
source

pub fn focus_next_workspace(&mut self)

Move focus to the Workspace after the currently focused workspace as defined by their\nposition in StackSet::ordered_workspaces.

\n

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another\nscreen then it will be pulled to the active screen rather than focus moving to the screen\nwhere the tag is currently located.

\n
source

pub fn focus_previous_workspace(&mut self)

Move focus to the Workspace before the currently focused workspace as defined by their\nposition in StackSet::ordered_workspaces.

\n

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another\nscreen then it will be pulled to the active screen rather than focus moving to the screen\nwhere the tag is currently located.

\n
source

pub fn tag_for_screen(&self, index: usize) -> Option<&str>

Find the tag of the Workspace currently displayed on Screen index.

\n

Returns None if the index is out of bounds

\n
source

pub fn tag_for_client(&self, client: &C) -> Option<&str>

Find the tag of the Workspace containing a given client.\nReturns Some(tag) if the client is known otherwise None.

\n
source

pub fn screen_for_client(&self, client: &C) -> Option<&Screen<C>>

If the given client is currently visible on a screen return a\nreference to that screen, otherwise None.

\n
source

pub fn tag_for_workspace_id(&self, id: usize) -> Option<String>

Find the tag of the Workspace with the given NetWmDesktop ID.

\n
source

pub fn contains(&self, client: &C) -> bool

Returns true if the StackSet contains an element equal to the given value.

\n
source

pub fn current_client(&self) -> Option<&C>

Extract a reference to the focused element of the current Stack

\n
source

pub fn current_screen(&self) -> &Screen<C>

An immutable reference to the currently focused Screen

\n
source

pub fn current_workspace(&self) -> &Workspace<C>

An immutable reference to the current Workspace

\n
source

pub fn current_workspace_mut(&mut self) -> &mut Workspace<C>

A mutable reference to the current Workspace

\n
source

pub fn current_stack(&self) -> Option<&Stack<C>>

An immutable reference to the current Stack if there is one

\n
source

pub fn current_tag(&self) -> &str

The tag of the current Workspace

\n
source

pub fn add_workspace<T>(&mut self, tag: T, layouts: LayoutStack) -> Result<()>
where\n T: Into<String>,

Add a new Workspace to this StackSet.

\n

The id assigned to this workspace will be max(workspace ids) + 1.

\n
§Errors
\n

This function will error with NonUniqueTags if the given tag is already present.

\n
source

pub fn add_invisible_workspace<T>(&mut self, tag: T) -> Result<()>
where\n T: Into<String>,

Add a new invisible Workspace to this StackSet.

\n

It will not be possible to focus this workspace on a screen but its\nstate will be tracked and clients can be placed on it.\nThe id assigned to this workspace will be max(workspace ids) + 1.

\n
§Errors
\n

This function will error with NonUniqueTags if the given tag is already present.

\n
source

pub fn workspace(&self, tag: &str) -> Option<&Workspace<C>>

A reference to the Workspace with a tag of tag if there is one

\n
source

pub fn workspace_mut(&mut self, tag: &str) -> Option<&mut Workspace<C>>

A mutable reference to the Workspace with a tag of tag if there is one

\n
source

pub fn next_layout(&mut self)

Switch to the next available Layout on the focused Workspace

\n
source

pub fn previous_layout(&mut self)

Switch to the previous available Layout on the focused Workspace

\n
source

pub fn set_layout_by_name(&mut self, layout: impl AsRef<str>)

Attempt to set the current Layout by name.

\n

This is a no-op if the requested layout is already active or if no layout with the given name\nis available for the active workspace.

\n
source

pub fn next_screen(&mut self)

Move focus to the next Screen

\n
source

pub fn previous_screen(&mut self)

Move focus to the previous Screen

\n
source

pub fn drag_workspace_forward(&mut self)

Drag the focused workspace onto the next Screen, holding focus

\n
source

pub fn drag_workspace_backward(&mut self)

Drag the focused workspace onto the previous Screen, holding focus

\n
source

pub fn with<T, F>(&self, default: T, f: F) -> T
where\n F: Fn(&Stack<C>) -> T,

If the current Stack is None, return default otherwise\napply the function to it to generate a value

\n
source

pub fn modify<F>(&mut self, f: F)
where\n F: FnOnce(Option<Stack<C>>) -> Option<Stack<C>>,

Apply a function to modify the current Stack if there is one\nor compute and inject a default value if it is currently None

\n
source

pub fn modify_occupied<F>(&mut self, f: F)
where\n F: FnOnce(Stack<C>) -> Stack<C>,

Apply a function to modify the current Stack if it is non-empty\nwithout allowing for emptying it entirely.

\n
source

pub fn screens(&self) -> impl Iterator<Item = &Screen<C>>

Iterate over each Screen in this StackSet in an arbitrary order.

\n
source

pub fn screens_mut(&mut self) -> impl Iterator<Item = &mut Screen<C>>

Mutably iterate over each Screen in this StackSet in an arbitrary order.

\n
source

pub fn workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each Workspace in this StackSet in an arbitrary order.

\n
source

pub fn non_hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each non-hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn workspaces_mut(&mut self) -> impl Iterator<Item = &mut Workspace<C>>

Mutably iterate over each Workspace in this StackSet in an arbitrary order.

\n
source

pub fn on_screen_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the Workspace currently displayed on a screen in an arbitrary order.

\n
source

pub fn hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn hidden_workspaces_mut(\n &mut self,\n) -> impl Iterator<Item = &mut Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn clients(&self) -> impl Iterator<Item = &C>

Iterate over each client in this StackSet in an arbitrary order.

\n
source

pub fn on_screen_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients present in on-screen Workspaces.

\n

NOTE: this does not mean that every client returned by this iterator\nis visible on the screen: only that it is currently assigned to a workspace\nthat is displayed on a screen.

\n
source

pub fn hidden_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients from workspaces not currently mapped to a screen.

\n
",0,"penrose::core::ClientSet"],["
source§

impl<C> StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash,

source

pub fn focus_up(&mut self)

Move focus from the current element up the Stack, wrapping to\nthe bottom if focus is already at the top.\nThis is a no-op if the current stack is empty.

\n
source

pub fn focus_down(&mut self)

Move focus from the current element down the Stack, wrapping to\nthe top if focus is already at the bottom.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_up(&mut self)

Swap the position of the focused element with one above it.\nThe currently focused element is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_down(&mut self)

Swap the position of the focused element with one below it.\nThe currently focused element is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_up(&mut self)

Rotate all elements of the stack forward, wrapping from top to bottom.\nThe currently focused position in the stack is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_down(&mut self)

Rotate all elements of the stack back, wrapping from bottom to top.\nThe currently focused position in the stack is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_focus_to_head(&mut self)

Rotate the Stack until the current focused element is in the head position.\nThis is a no-op if the current stack is empty.

\n
source

pub fn focus_head(&mut self)

Move focus to the element in the head position.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_focus_and_head(&mut self)

Swap the current head element with the focused element in the\nstack order. Focus stays with the original focused element.\nThis is a no-op if the current stack is empty.

\n
",0,"penrose::core::ClientSet"],["
source§

impl StackSet<Xid>

source

pub fn float(&mut self, client: Xid, r: Rect) -> Result<()>

Record a known client as floating, giving its preferred screen position.

\n
§Errors
\n

This method with return Error::UnknownClient if the given client is\nnot already managed in this stack_set.

\n

This method with return Error::ClientIsNotVisible if the given client is\nnot currently mapped to a screen. This is required to determine the correct\nrelative positioning for the floating client as is it is moved between\nscreens.

\n
source

pub fn toggle_floating_state(\n &mut self,\n client: Xid,\n r: Rect,\n) -> Result<Option<Rect>>

If a known client is floating, sink it and return its previous preferred screen position.\nOtherwise, record it as floating with its preferred screen position.

\n
§Errors
\n

This method with return Error::UnknownClient if the given client is\nnot already managed in this stack_set.

\n

This method with return Error::ClientIsNotVisible if the given client is\nnot currently mapped to a screen. This is required to determine the correct\nrelative positioning for the floating client as is it is moved between\nscreens.

\n
",0,"penrose::core::ClientSet"]] +"penrose":[["
source§

impl<C> Clone for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Clone,

source§

fn clone(&self) -> StackSet<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","penrose::core::ClientSet"],["
source§

impl<C> Debug for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","penrose::core::ClientSet"],["
source§

impl<C> Default for StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash + Default,

source§

fn default() -> StackSet<C>

Returns the “default value” for a type. Read more
","Default","penrose::core::ClientSet"],["
source§

impl<C> StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash,

source

pub fn try_new<I, J, T>(\n layouts: LayoutStack,\n ws_tags: I,\n screen_details: J,\n) -> Result<Self>
where\n T: Into<String>,\n I: IntoIterator<Item = T>,\n J: IntoIterator<Item = Rect>,

Create a new StackSet of empty stacks with the given workspace names.

\n
§Errors
\n

This method will error if there are not enough workspaces to cover the\nattached screens or if no screens are attached.

\n
source

pub fn focus_screen(&mut self, screen_index: usize)

Set focus to the Screen with the specified index.

\n

If there is no matching screen then the StackSet is unmodified.

\n
source

pub fn focus_tag(&mut self, tag: impl AsRef<str>)

Set focus to the Workspace with the specified tag.

\n

If there is no matching workspace then the StackSet is unmodified.\nIf the Workspace is currently visible then focus moves to the screen\ncontaining that workspace, otherwise the workspace replaces whatever\nwas on the active screen.

\n

If you always want to focus the given tag on the active screen, see\nStackSet::pull_tag_to_screen instead.

\n
source

pub fn pull_tag_to_screen(&mut self, tag: impl AsRef<str>)

Focus the requested tag on the current screen, swapping the current\ntag with it.

\n
source

pub fn toggle_tag(&mut self)

Toggle focus back to the previously focused Workspace based on its tag

\n
source

pub fn focus_client(&mut self, client: &C)

Focus the given client and set its Workspace as current (see\nfocus_tag).

\n

If the client is unknown then this is a no-op.

\n
source

pub fn insert(&mut self, client: C)

Insert the given client to the current Stack in a default Position.

\n
source

pub fn insert_at(&mut self, pos: Position, client: C)

Insert the given client to the current Stack at the requested Position.\nIf the client is already present somewhere in the StackSet the stack_set is unmodified.

\n
source

pub fn sink(&mut self, client: &C) -> Option<Rect>

Clear the floating status of a client, returning its previous preferred\nscreen position if the client was known, otherwise None.

\n
source

pub fn is_floating(&self, client: &C) -> bool

Check whether a given client is currently floating.

\n
source

pub fn has_floating_windows(&self, tag: impl AsRef<str>) -> bool

Check whether a given tag currently has any floating windows present.

\n

Returns false if the tag given is unknown to this StackSet.

\n
source

pub fn remove_client(&mut self, client: &C) -> Option<C>

Delete a client from this StackSet.

\n
source

pub fn remove_focused(&mut self) -> Option<C>

Remove the currently focused client from this stack if there is one.

\n

The client is returned to the caller as Some(C) if there was one.

\n
source

pub fn kill_focused(&mut self)

Delete the currently focused client from this stack if there is one.

\n

The following diff will send a kill client message to this client on\nrefresh.

\n
source

pub fn move_focused_to_tag(&mut self, tag: impl AsRef<str>)

Move the focused client of the current Workspace to the focused position\nof the workspace matching the provided tag.

\n
source

pub fn move_focused_to_screen(&mut self, screen: usize)

Move the focused client of the current Workspace to the focused position\nof the workspace on Screen screen.

\n
source

pub fn move_client_to_tag(&mut self, client: &C, tag: impl AsRef<str>)

Move the given client to the focused position of the Workspace matching\nthe provided tag. If the client is already on the target workspace it is\nmoved to the focused position.

\n
source

pub fn move_client_to_current_tag(&mut self, client: &C)

Move the given client to the focused position of the current Workspace.\nIf the client is already on the target workspace it is moved to the focused position.

\n
source

pub fn contains_tag(&self, tag: &str) -> bool

Is the given tag present in the StackSet?

\n
source

pub fn ordered_tags(&self) -> Vec<String>

All Workspace tags in this StackSet order by their id that have not been\nmarked as being invisible.

\n
source

pub fn ordered_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

All Workspaces in this StackSet order by their id that have not been\nmarked as being invisible.

\n
source

pub fn focus_next_workspace(&mut self)

Move focus to the Workspace after the currently focused workspace as defined by their\nposition in StackSet::ordered_workspaces.

\n

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another\nscreen then it will be pulled to the active screen rather than focus moving to the screen\nwhere the tag is currently located.

\n
source

pub fn focus_previous_workspace(&mut self)

Move focus to the Workspace before the currently focused workspace as defined by their\nposition in StackSet::ordered_workspaces.

\n

As with the behaviour of StackSet::pull_tag_to_screen, if the next tag is on another\nscreen then it will be pulled to the active screen rather than focus moving to the screen\nwhere the tag is currently located.

\n
source

pub fn tag_for_screen(&self, index: usize) -> Option<&str>

Find the tag of the Workspace currently displayed on Screen index.

\n

Returns None if the index is out of bounds

\n
source

pub fn tag_for_client(&self, client: &C) -> Option<&str>

Find the tag of the Workspace containing a given client.\nReturns Some(tag) if the client is known otherwise None.

\n
source

pub fn screen_for_client(&self, client: &C) -> Option<&Screen<C>>

If the given client is currently visible on a screen return a\nreference to that screen, otherwise None.

\n
source

pub fn tag_for_workspace_id(&self, id: usize) -> Option<String>

Find the tag of the Workspace with the given NetWmDesktop ID.

\n
source

pub fn contains(&self, client: &C) -> bool

Returns true if the StackSet contains an element equal to the given value.

\n
source

pub fn current_client(&self) -> Option<&C>

Extract a reference to the focused element of the current Stack

\n
source

pub fn current_screen(&self) -> &Screen<C>

An immutable reference to the currently focused Screen

\n
source

pub fn current_workspace(&self) -> &Workspace<C>

An immutable reference to the current Workspace

\n
source

pub fn current_workspace_mut(&mut self) -> &mut Workspace<C>

A mutable reference to the current Workspace

\n
source

pub fn current_stack(&self) -> Option<&Stack<C>>

An immutable reference to the current Stack if there is one

\n
source

pub fn current_tag(&self) -> &str

The tag of the current Workspace

\n
source

pub fn add_workspace<T>(&mut self, tag: T, layouts: LayoutStack) -> Result<()>
where\n T: Into<String>,

Add a new Workspace to this StackSet.

\n

The id assigned to this workspace will be max(workspace ids) + 1.

\n
§Errors
\n

This function will error with NonUniqueTags if the given tag is already present.

\n
source

pub fn add_invisible_workspace<T>(&mut self, tag: T) -> Result<()>
where\n T: Into<String>,

Add a new invisible Workspace to this StackSet.

\n

It will not be possible to focus this workspace on a screen but its\nstate will be tracked and clients can be placed on it.\nThe id assigned to this workspace will be max(workspace ids) + 1.

\n
§Errors
\n

This function will error with NonUniqueTags if the given tag is already present.

\n
source

pub fn workspace(&self, tag: &str) -> Option<&Workspace<C>>

A reference to the Workspace with a tag of tag if there is one

\n
source

pub fn workspace_mut(&mut self, tag: &str) -> Option<&mut Workspace<C>>

A mutable reference to the Workspace with a tag of tag if there is one

\n
source

pub fn next_layout(&mut self)

Switch to the next available Layout on the focused Workspace

\n
source

pub fn previous_layout(&mut self)

Switch to the previous available Layout on the focused Workspace

\n
source

pub fn set_layout_by_name(&mut self, layout: impl AsRef<str>)

Attempt to set the current Layout by name.

\n

This is a no-op if the requested layout is already active or if no layout with the given name\nis available for the active workspace.

\n
source

pub fn next_screen(&mut self)

Move focus to the next Screen

\n
source

pub fn previous_screen(&mut self)

Move focus to the previous Screen

\n
source

pub fn drag_workspace_forward(&mut self)

Drag the focused workspace onto the next Screen, holding focus

\n
source

pub fn drag_workspace_backward(&mut self)

Drag the focused workspace onto the previous Screen, holding focus

\n
source

pub fn with<T, F>(&self, default: T, f: F) -> T
where\n F: Fn(&Stack<C>) -> T,

If the current Stack is None, return default otherwise\napply the function to it to generate a value

\n
source

pub fn modify<F>(&mut self, f: F)
where\n F: FnOnce(Option<Stack<C>>) -> Option<Stack<C>>,

Apply a function to modify the current Stack if there is one\nor compute and inject a default value if it is currently None

\n
source

pub fn modify_occupied<F>(&mut self, f: F)
where\n F: FnOnce(Stack<C>) -> Stack<C>,

Apply a function to modify the current Stack if it is non-empty\nwithout allowing for emptying it entirely.

\n
source

pub fn screens(&self) -> impl Iterator<Item = &Screen<C>>

Iterate over each Screen in this StackSet in an arbitrary order.

\n
source

pub fn screens_mut(&mut self) -> impl Iterator<Item = &mut Screen<C>>

Mutably iterate over each Screen in this StackSet in an arbitrary order.

\n
source

pub fn workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each Workspace in this StackSet in an arbitrary order.

\n
source

pub fn non_hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over each non-hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn workspaces_mut(&mut self) -> impl Iterator<Item = &mut Workspace<C>>

Mutably iterate over each Workspace in this StackSet in an arbitrary order.

\n
source

pub fn on_screen_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the Workspace currently displayed on a screen in an arbitrary order.

\n
source

pub fn hidden_workspaces(&self) -> impl Iterator<Item = &Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn hidden_workspaces_mut(\n &mut self,\n) -> impl Iterator<Item = &mut Workspace<C>>

Iterate over the currently hidden Workspace in this StackSet in an arbitrary order.

\n
source

pub fn clients(&self) -> impl Iterator<Item = &C>

Iterate over each client in this StackSet in an arbitrary order.

\n
source

pub fn on_screen_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients present in on-screen Workspaces.

\n

NOTE: this does not mean that every client returned by this iterator\nis visible on the screen: only that it is currently assigned to a workspace\nthat is displayed on a screen.

\n
source

pub fn hidden_workspace_clients(&self) -> impl Iterator<Item = &C>

Iterate over clients from workspaces not currently mapped to a screen.

\n
",0,"penrose::core::ClientSet"],["
source§

impl<C> StackSet<C>
where\n C: Clone + PartialEq + Eq + Hash,

source

pub fn focus_up(&mut self)

Move focus from the current element up the Stack, wrapping to\nthe bottom if focus is already at the top.\nThis is a no-op if the current stack is empty.

\n
source

pub fn focus_down(&mut self)

Move focus from the current element down the Stack, wrapping to\nthe top if focus is already at the bottom.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_up(&mut self)

Swap the position of the focused element with one above it.\nThe currently focused element is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_down(&mut self)

Swap the position of the focused element with one below it.\nThe currently focused element is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_up(&mut self)

Rotate all elements of the stack forward, wrapping from top to bottom.\nThe currently focused position in the stack is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_down(&mut self)

Rotate all elements of the stack back, wrapping from bottom to top.\nThe currently focused position in the stack is maintained by this operation.\nThis is a no-op if the current stack is empty.

\n
source

pub fn rotate_focus_to_head(&mut self)

Rotate the Stack until the current focused element is in the head position.\nThis is a no-op if the current stack is empty.

\n
source

pub fn focus_head(&mut self)

Move focus to the element in the head position.\nThis is a no-op if the current stack is empty.

\n
source

pub fn swap_focus_and_head(&mut self)

Swap the current head element with the focused element in the\nstack order. Focus stays with the original focused element.\nThis is a no-op if the current stack is empty.

\n
",0,"penrose::core::ClientSet"],["
source§

impl StackSet<Xid>

source

pub fn float(&mut self, client: Xid, r: Rect) -> Result<()>

Record a known client as floating, giving its preferred screen position.

\n
§Errors
\n

This method with return Error::UnknownClient if the given client is\nnot already managed in this stack_set.

\n

This method with return Error::ClientIsNotVisible if the given client is\nnot currently mapped to a screen. This is required to determine the correct\nrelative positioning for the floating client as is it is moved between\nscreens.

\n
source

pub fn toggle_floating_state(\n &mut self,\n client: Xid,\n r: Rect,\n) -> Result<Option<Rect>>

If a known client is floating, sink it and return its previous preferred screen position.\nOtherwise, record it as floating with its preferred screen position.

\n
§Errors
\n

This method with return Error::UnknownClient if the given client is\nnot already managed in this stack_set.

\n

This method with return Error::ClientIsNotVisible if the given client is\nnot currently mapped to a screen. This is required to determine the correct\nrelative positioning for the floating client as is it is moved between\nscreens.

\n
",0,"penrose::core::ClientSet"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file