Skip to main content

SaTokenManager

Struct SaTokenManager 

Source
pub struct SaTokenManager {
    pub config: SaTokenConfig,
    /* private fields */
}
Expand description

sa-token 管理器

Fields§

§config: SaTokenConfig

配置信息

Implementations§

Source§

impl SaTokenManager

Source

pub async fn disable_level( &self, login_id: &str, service: &str, level: i32, time: i64, ) -> Result<(), SaTokenError>

封禁指定账号的指定服务及等级

time 单位为秒,-1 表示永久封禁。

Source

pub async fn disable( &self, login_id: &str, time: i64, ) -> Result<(), SaTokenError>

封禁指定账号(默认服务 login、默认等级)

Source

pub async fn get_disable_level( &self, login_id: &str, service: &str, ) -> Result<i32, SaTokenError>

获取封禁等级;未封禁返回 NOT_DISABLE_LEVEL

Source

pub async fn is_disable_level( &self, login_id: &str, service: &str, level: i32, ) -> Result<bool, SaTokenError>

是否已被封禁到指定等级(含更高等级)

Source

pub async fn check_disable_level( &self, login_id: &str, service: &str, level: i32, ) -> Result<(), SaTokenError>

校验封禁;若等级达到阈值则抛出 SaTokenError::DisableService

Source

pub async fn check_disable_services( &self, login_id: &str, services: &[&str], level: i32, ) -> Result<(), SaTokenError>

校验多个服务的封禁(全部通过才算通过)

Source

pub async fn untie_disable( &self, login_id: &str, service: &str, ) -> Result<(), SaTokenError>

解封指定服务

Source§

impl SaTokenManager

Source

pub async fn open_safe( &self, token: &TokenValue, service: &str, safe_time: i64, ) -> Result<(), SaTokenError>

为指定 token 开启二级认证

Source

pub async fn is_safe( &self, token: &TokenValue, service: &str, ) -> Result<bool, SaTokenError>

判断 token 是否已通过指定业务的二级认证

Source

pub async fn check_safe( &self, token: &TokenValue, service: &str, ) -> Result<(), SaTokenError>

校验二级认证;未通过抛出 SaTokenError::NotSafe

Source

pub async fn close_safe( &self, token: &TokenValue, service: &str, ) -> Result<(), SaTokenError>

关闭二级认证

Source

pub async fn get_safe_time( &self, token: &TokenValue, service: &str, ) -> Result<Option<i64>, SaTokenError>

获取二级认证剩余有效时间(秒);未认证返回 None

Source§

impl SaTokenManager

Source

pub async fn get_token_session( &self, token: &TokenValue, ) -> Result<SaSession, SaTokenError>

获取 Token-Session(不存在时按配置创建)

Source

pub async fn get_anon_token_session( &self, token: &TokenValue, ) -> Result<SaSession, SaTokenError>

匿名 Token-Session(不校验登录)

Source

pub async fn save_token_session( &self, token: &TokenValue, session: &SaSession, ) -> Result<(), SaTokenError>

Source

pub async fn delete_token_session( &self, token: &TokenValue, ) -> Result<(), SaTokenError>

Source§

impl SaTokenManager

Source

pub fn new(storage: Arc<dyn SaStorage>, config: SaTokenConfig) -> SaTokenManager

创建新的管理器实例

Source

pub fn with_stp_interface(self, iface: Arc<dyn StpInterface>) -> SaTokenManager

Source

pub fn with_online_manager(self, manager: Arc<OnlineManager>) -> SaTokenManager

Source

pub fn with_distributed_manager( self, manager: Arc<DistributedSessionManager>, ) -> SaTokenManager

Source

pub fn online_manager(&self) -> Option<&Arc<OnlineManager>>

Source

pub fn distributed_manager(&self) -> Option<&Arc<DistributedSessionManager>>

Source

pub fn event_bus(&self) -> &SaTokenEventBus

获取事件总线的引用

Source

pub async fn login( &self, login_id: impl Into<String>, ) -> Result<TokenValue, SaTokenError>

登录:为指定账号创建 token

Source

pub async fn login_with_options( &self, login_id: impl Into<String>, login_type: Option<String>, device: Option<String>, extra_data: Option<Value>, nonce: Option<String>, expire_time: Option<DateTime<Utc>>, ) -> Result<TokenValue, SaTokenError>

登录:为指定账号创建 token(支持自定义 TokenInfo 字段)

§参数 | Parameters
  • login_id - 登录用户 ID | Login user ID
  • login_type - 登录类型(如 “user”, “admin”)| Login type (e.g., “user”, “admin”)
  • device - 设备标识 | Device identifier
  • extra_data - 额外数据 | Extra data
  • nonce - 防重放攻击的一次性令牌 | One-time token for replay attack prevention
  • expire_time - 自定义过期时间(如果为 None,则使用配置的过期时间)| Custom expiration time (if None, use configured timeout)
§示例 | Example
let token = manager.login_with_options(
    "user_123",
    Some("admin".to_string()),
    Some("iPhone".to_string()),
    Some(json!({"ip": "192.168.1.1"})),
    Some("nonce_123".to_string()),
    None,
).await?;
Source

pub async fn login_with_token_info( &self, token_info: TokenInfo, ) -> Result<TokenValue, SaTokenError>

登录:使用完整的 TokenInfo 对象创建 token

§参数 | Parameters
  • token_info - 完整的 TokenInfo 对象,包含所有 token 信息 | Complete TokenInfo object containing all token information
§说明 | Notes
  • TokenInfo 中的 token 字段将被使用(如果已设置),否则会自动生成
  • TokenInfo 中的 login_id 字段必须设置
  • 如果 expire_time 为 None,将使用配置的过期时间
  • The token field in TokenInfo will be used (if set), otherwise will be auto-generated
  • The login_id field in TokenInfo must be set
  • If expire_time is None, will use configured timeout
§示例 | Example
use sa_token_core::token::{TokenInfo, TokenValue};
use chrono::Utc;
 
let mut token_info = TokenInfo::new(
    TokenValue::new("custom_token_123"),
    "user_123"
);
token_info.login_type = "admin".to_string();
token_info.device = Some("iPhone".to_string());
token_info.extra_data = Some(json!({"ip": "192.168.1.1"}));
 
let token = manager.login_with_token_info(token_info).await?;
Source

pub async fn logout(&self, token: &TokenValue) -> Result<(), SaTokenError>

登出:删除指定 token(LOGOUT 模式)

Source

pub async fn kick_out_by_token( &self, token: &TokenValue, ) -> Result<(), SaTokenError>

踢人下线(KICKOUT 模式:保留映射标记 -5)

Source

pub async fn replaced_by_token( &self, token: &TokenValue, ) -> Result<(), SaTokenError>

顶号下线(REPLACED 模式:保留映射标记 -4)

Source

pub async fn logout_by_login_id( &self, login_id: &str, ) -> Result<(), SaTokenError>

根据登录 ID 登出所有 token

Source

pub async fn get_token_info( &self, token: &TokenValue, ) -> Result<TokenInfo, SaTokenError>

获取 token 信息

Source

pub async fn is_valid(&self, token: &TokenValue) -> bool

检查 token 是否有效

Source

pub async fn get_session( &self, login_id: &str, ) -> Result<SaSession, SaTokenError>

获取 session

Source

pub async fn save_session( &self, session: &SaSession, ) -> Result<(), SaTokenError>

保存 session

Source

pub async fn delete_session(&self, login_id: &str) -> Result<(), SaTokenError>

删除 session

Source

pub async fn renew_timeout( &self, token: &TokenValue, timeout_seconds: i64, ) -> Result<(), SaTokenError>

续期 token(重置过期时间)

Source

pub async fn kick_out(&self, login_id: &str) -> Result<(), SaTokenError>

踢人下线(按 login_id,对该账号所有 token 执行 KICKOUT)

Source

pub async fn get_terminal_list( &self, login_type: &str, login_id: &str, device_type: Option<&str>, ) -> Result<Vec<SaTerminalInfo>, SaTokenError>

获取指定账号已登录设备终端列表

Source

pub async fn get_token_value_list_by_login_id( &self, login_type: &str, login_id: &str, device_type: Option<&str>, ) -> Result<Vec<String>, SaTokenError>

获取指定账号的 token 列表(来自终端列表)

Source

pub async fn get_terminal_info_by_token( &self, token: &TokenValue, ) -> Result<Option<SaTerminalInfo>, SaTokenError>

按 token 反查终端信息

Source§

impl SaTokenManager

Source

pub async fn get_permissions_with_type( &self, login_type: &str, login_id: &str, ) -> Result<Vec<String>, SaTokenError>

Source

pub async fn set_permissions_with_type( &self, login_type: &str, login_id: &str, permissions: Vec<String>, ) -> Result<(), SaTokenError>

Source

pub async fn get_roles_with_type( &self, login_type: &str, login_id: &str, ) -> Result<Vec<String>, SaTokenError>

Source

pub async fn set_roles_with_type( &self, login_type: &str, login_id: &str, roles: Vec<String>, ) -> Result<(), SaTokenError>

Source

pub async fn set_permissions( &self, login_id: &str, permissions: Vec<String>, ) -> Result<(), SaTokenError>

覆盖设置用户权限列表 会完全替换该用户的所有权限

Source

pub async fn get_permissions( &self, login_id: &str, ) -> Result<Vec<String>, SaTokenError>

获取用户全部权限列表 用户不存在或无权限时返回空列表

Source

pub async fn add_permission( &self, login_id: &str, permission: String, ) -> Result<(), SaTokenError>

追加单个权限(已存在则跳过,避免重复) 采用读-改-写模式,分布式高并发下存在竞态风险

Source

pub async fn remove_permission( &self, login_id: &str, permission: &str, ) -> Result<(), SaTokenError>

移除用户的某个权限 不存在时无操作,仅在确实删除了元素时才回写存储

Source

pub async fn clear_permissions( &self, login_id: &str, ) -> Result<(), SaTokenError>

清除用户的全部权限 直接删除对应存储键

Source

pub async fn set_roles( &self, login_id: &str, roles: Vec<String>, ) -> Result<(), SaTokenError>

覆盖设置用户角色列表 会完全替换该用户的所有角色

Source

pub async fn get_roles( &self, login_id: &str, ) -> Result<Vec<String>, SaTokenError>

获取用户全部角色列表 用户不存在或无角色时返回空列表

Source

pub async fn add_role( &self, login_id: &str, role: String, ) -> Result<(), SaTokenError>

追加单个角色(已存在则跳过,避免重复) 采用读-改-写模式,分布式高并发下存在竞态风险

Source

pub async fn remove_role( &self, login_id: &str, role: &str, ) -> Result<(), SaTokenError>

移除用户的某个角色 不存在时无操作,仅在确实删除了元素时才回写存储

Source

pub async fn clear_roles(&self, login_id: &str) -> Result<(), SaTokenError>

清除用户的全部角色 直接删除对应存储键

Trait Implementations§

Source§

impl Clone for SaTokenManager

Source§

fn clone(&self) -> SaTokenManager

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoCollection<T> for T

Source§

fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.
Source§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more