pub struct SaSession {
pub id: String,
pub create_time: DateTime<Utc>,
pub terminal_list: Vec<SaTerminalInfo>,
pub history_terminal_count: i32,
pub data: HashMap<String, Value>,
}Expand description
Session 对象 | Session Object
用于存储用户会话数据的对象 Object for storing user session data
§字段说明 | Field Description
id: Session 唯一标识 | Session unique identifiercreate_time: 创建时间 | Creation timedata: 存储的键值对数据 | Stored key-value data
§使用示例 | Usage Example
let mut session = SaSession::new("session_123");
session.set("username", "张三")?;
session.set("age", 25)?;
let username: Option<String> = session.get("username");
println!("Username: {:?}", username);Fields§
§id: StringSession ID
create_time: DateTime<Utc>创建时间 | Creation time
terminal_list: Vec<SaTerminalInfo>已登录设备终端列表(对齐 Java SaSession.terminalList)
history_terminal_count: i32历史累计登录设备数,仅增不减,用于生成终端 index(对齐 Java historyTerminalCount)
data: HashMap<String, Value>数据存储 | Data storage
Implementations§
Source§impl SaSession
impl SaSession
pub fn new(id: impl Into<String>) -> SaSession
Sourcepub fn set<T>(&mut self, key: impl Into<String>, value: T) -> Result<(), Error>where
T: Serialize,
pub fn set<T>(&mut self, key: impl Into<String>, value: T) -> Result<(), Error>where
T: Serialize,
Sourcepub fn get<T>(&self, key: &str) -> Option<T>where
T: for<'de> Deserialize<'de>,
pub fn get<T>(&self, key: &str) -> Option<T>where
T: for<'de> Deserialize<'de>,
Sourcepub fn add_terminal(&mut self, terminal: SaTerminalInfo)
pub fn add_terminal(&mut self, terminal: SaTerminalInfo)
新增一个终端:自动分配 index = history_terminal_count + 1,并累加历史计数
Sourcepub fn remove_terminal(&mut self, token_value: &str) -> Option<SaTerminalInfo>
pub fn remove_terminal(&mut self, token_value: &str) -> Option<SaTerminalInfo>
按 token 移除终端;返回被移除的终端(不存在则 None)
Sourcepub fn get_terminal(&self, token_value: &str) -> Option<&SaTerminalInfo>
pub fn get_terminal(&self, token_value: &str) -> Option<&SaTerminalInfo>
按 token 获取终端引用
Sourcepub fn terminal_list_copy(&self) -> Vec<SaTerminalInfo>
pub fn terminal_list_copy(&self) -> Vec<SaTerminalInfo>
终端列表副本
Sourcepub fn get_terminal_list_by_device_type(
&self,
device_type: Option<&str>,
) -> Vec<SaTerminalInfo>
pub fn get_terminal_list_by_device_type( &self, device_type: Option<&str>, ) -> Vec<SaTerminalInfo>
按设备类型筛选终端;device_type 传 None 表示不限设备类型
Sourcepub fn get_token_value_list_by_device_type(
&self,
device_type: Option<&str>,
) -> Vec<String>
pub fn get_token_value_list_by_device_type( &self, device_type: Option<&str>, ) -> Vec<String>
按设备类型提取 token 列表
Sourcepub fn terminal_count(&self) -> usize
pub fn terminal_count(&self) -> usize
终端数量
Trait Implementations§
Source§impl<'de> Deserialize<'de> for SaSession
impl<'de> Deserialize<'de> for SaSession
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SaSession, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SaSession, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for SaSession
impl Serialize for SaSession
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for SaSession
impl RefUnwindSafe for SaSession
impl Send for SaSession
impl Sync for SaSession
impl Unpin for SaSession
impl UnsafeUnpin for SaSession
impl UnwindSafe for SaSession
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
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>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
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 rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
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 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.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
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);