pub struct Service {
mutex: MutexMap<OwnedUserId, ()>,
services: Arc<OnceServices>,
profilechangeid_userid: Arc<Map>,
useridprofilekey_value: Arc<Map>,
}Fields§
§mutex: MutexMap<OwnedUserId, ()>§services: Arc<OnceServices>§profilechangeid_userid: Arc<Map>§useridprofilekey_value: Arc<Map>Implementations§
Source§impl Service
impl Service
Sourcepub async fn mirror_remote_profile(
&self,
user_id: &UserId,
) -> Result<SmallVec<[ProfileFieldName; 1]>>
pub async fn mirror_remote_profile( &self, user_id: &UserId, ) -> Result<SmallVec<[ProfileFieldName; 1]>>
Replaces a remote user’s cached profile with the one their server serves.
Unlike fetch_remote_profile, which only adds and overwrites, a cached
field missing from the response is removed, so a value the remote user has
since deleted stops reaching clients. Returns the names of the removed
fields.
Source§impl Service
impl Service
Sourcepub(super) async fn mirror_profile(
&self,
user_id: &UserId,
response: Response,
) -> Result<SmallVec<[ProfileFieldName; 1]>>
pub(super) async fn mirror_profile( &self, user_id: &UserId, response: Response, ) -> Result<SmallVec<[ProfileFieldName; 1]>>
Stores a profile response as the user’s complete cached profile.
Every returned field is written and every cached field the response omits is deleted in one logged write under the profile lock, so no concurrent write interleaves and connected clients see the removals.
Source§impl Service
impl Service
pub async fn update_all_rooms( &self, user_id: &UserId, profile_values: &[(ProfileFieldName, Option<Value>)], propagation: Propagation, )
Source§impl Service
impl Service
async fn update_room( &self, user_id: &UserId, room_id: &RoomId, profile_values: &[(ProfileFieldName, Option<Value>)], propagation: Propagation, current_displayname: Option<&str>, current_avatar_url: Option<&MxcUri>, ) -> Result
Source§impl Service
impl Service
Sourcepub async fn set_displayname(
&self,
user_id: &UserId,
displayname: Option<&str>,
propagation: Option<Propagation>,
) -> Result
pub async fn set_displayname( &self, user_id: &UserId, displayname: Option<&str>, propagation: Option<Propagation>, ) -> Result
Sets a new displayname or removes it if displayname is None. You still need to notify all rooms of this change.
Source§impl Service
impl Service
Sourcepub async fn displayname(&self, user_id: &UserId) -> Result<String>
pub async fn displayname(&self, user_id: &UserId) -> Result<String>
Returns the displayname of a user on this homeserver.
Source§impl Service
impl Service
Sourcepub async fn set_avatar_url(
&self,
user_id: &UserId,
avatar_url: Option<&MxcUri>,
propagation: Option<Propagation>,
) -> Result
pub async fn set_avatar_url( &self, user_id: &UserId, avatar_url: Option<&MxcUri>, propagation: Option<Propagation>, ) -> Result
Sets a new avatar_url or removes it if avatar_url is None.
Source§impl Service
impl Service
Sourcepub async fn avatar_url(&self, user_id: &UserId) -> Result<OwnedMxcUri>
pub async fn avatar_url(&self, user_id: &UserId) -> Result<OwnedMxcUri>
Get the avatar_url of a user.
Source§impl Service
impl Service
Sourcepub async fn set_timezone(
&self,
user_id: &UserId,
timezone: Option<&str>,
propagation: Option<Propagation>,
) -> Result
pub async fn set_timezone( &self, user_id: &UserId, timezone: Option<&str>, propagation: Option<Propagation>, ) -> Result
Sets a new timezone or removes it if timezone is None.
Source§impl Service
impl Service
Sourcepub fn all_profile_keys(
&self,
user_id: &UserId,
) -> impl Stream<Item = ProfileFieldValue> + Send
pub fn all_profile_keys( &self, user_id: &UserId, ) -> impl Stream<Item = ProfileFieldValue> + Send
Streams every stored profile field.
A field whose stored value no longer parses is dropped; try_all_profile_keys
surfaces it instead.
Source§impl Service
impl Service
Sourcepub fn try_all_profile_keys(
&self,
user_id: &UserId,
) -> impl Stream<Item = Result<ProfileFieldValue>> + Send
pub fn try_all_profile_keys( &self, user_id: &UserId, ) -> impl Stream<Item = Result<ProfileFieldValue>> + Send
Streams every stored profile field, surfacing storage and decoding errors.
A stored value that no longer parses as a profile field is an error item rather than a dropped one, so a caller validating the whole profile can refuse to proceed on it.
Source§impl Service
impl Service
Sourcepub fn profile_field_names(
&self,
user_id: &UserId,
) -> impl Stream<Item = ProfileFieldName> + Send
pub fn profile_field_names( &self, user_id: &UserId, ) -> impl Stream<Item = ProfileFieldName> + Send
Streams the names of the fields a user’s profile holds.
The name rides the key, so a caller after names alone skips deserializing
every value the way all_profile_keys must.
Source§impl Service
impl Service
Sourcepub fn try_profile_field_names(
&self,
user_id: &UserId,
) -> impl Stream<Item = Result<ProfileFieldName>> + Send
pub fn try_profile_field_names( &self, user_id: &UserId, ) -> impl Stream<Item = Result<ProfileFieldName>> + Send
Enumerates current profile field names, preserving storage and decoding errors.
Sync bases must finish this inventory before acknowledging profile delivery.
Source§impl Service
impl Service
Sourcepub async fn clear_profile_keys(&self, user_id: &UserId) -> Result
pub async fn clear_profile_keys(&self, user_id: &UserId) -> Result
Clears every stored profile field and propagates canonical removals.
Member events are rewritten only for a local user, before the removals and their change rows commit together under the profile lock. A preparation error leaves storage unchanged but does not undo emitted member events.
Source§impl Service
impl Service
Sourcepub async fn set_profile_keys(
&self,
user_id: &UserId,
profile_values: &[(ProfileFieldName, Option<Value>)],
propagation: Option<Propagation>,
) -> Result
pub async fn set_profile_keys( &self, user_id: &UserId, profile_values: &[(ProfileFieldName, Option<Value>)], propagation: Option<Propagation>, ) -> Result
Sets profile field values, removing a field whose value is None.
Member events are rewritten first, then the stored fields and their change rows commit together under the profile lock. A preparation error leaves storage unchanged but does not undo emitted member events.
Source§impl Service
impl Service
Sourceasync fn set_profile_keys_locked(
&self,
_profile_lock: &MutexMapGuard<OwnedUserId, ()>,
user_id: &UserId,
profile_values: &[(ProfileFieldName, Option<Value>)],
propagation: Option<Propagation>,
) -> Result
async fn set_profile_keys_locked( &self, _profile_lock: &MutexMapGuard<OwnedUserId, ()>, user_id: &UserId, profile_values: &[(ProfileFieldName, Option<Value>)], propagation: Option<Propagation>, ) -> Result
Sets profile field values under a profile lock the caller already holds.
A caller that must read the stored profile and write it back without an interleaved writer takes the lock once and passes it here.
Source§impl Service
impl Service
Sourceasync fn changed_fields<'a>(
&self,
user_id: &UserId,
profile_values: &'a [(ProfileFieldName, Option<Value>)],
) -> Result<SmallVec<[&'a str; 1]>>
async fn changed_fields<'a>( &self, user_id: &UserId, profile_values: &'a [(ProfileFieldName, Option<Value>)], ) -> Result<SmallVec<[&'a str; 1]>>
Names the fields whose stored value the write would actually change.
Only these are logged for the user’s rooms, or at all for a remote user. A write restoring what is already stored is news to nobody else, and the on-demand remote refresh reissues every field on every lookup of a remote profile, so logging those would multiply the log by the request rate rather than the change rate.
Source§impl Service
impl Service
Sourceasync fn publish_update<'a, L, T, S>(
&self,
user_id: &UserId,
logged: L,
changed: &[T],
txn: Txn,
rooms: impl FnOnce() -> S + Send,
) -> Result
async fn publish_update<'a, L, T, S>( &self, user_id: &UserId, logged: L, changed: &[T], txn: Txn, rooms: impl FnOnce() -> S + Send, ) -> Result
Commits staged profile fields together with their change rows.
Every logged field gets a row under the user’s own prefix; every changed field also gets one under each room they are joined to. The row names the field and not only the user because a removal is otherwise unreportable: a reader re-reading the live profile cannot tell a cleared field from one that was never set. A room scan error discards the whole batch, so no row for that count is ever visible.
Source§impl Service
impl Service
Source§impl Service
impl Service
Sourcepub fn profile_changed<'a>(
&'a self,
user_id: &'a UserId,
from: u64,
to: Option<u64>,
) -> impl Stream<Item = ProfileChange<'a>> + Send + 'a
pub fn profile_changed<'a>( &'a self, user_id: &'a UserId, from: u64, to: Option<u64>, ) -> impl Stream<Item = ProfileChange<'a>> + Send + 'a
Streams the profile fields the user wrote themselves, restatements included.
The range is half-open on the low side, so a caller passes the sync token
it already delivered. An absent to leaves the walk unbounded above.
Storage and decoding failures are logged and skipped.
Source§impl Service
impl Service
Sourcepub fn try_profile_changed<'a>(
&'a self,
user_id: &'a UserId,
from: u64,
to: Option<u64>,
) -> impl Stream<Item = Result<ProfileChange<'a>>> + Send + 'a
pub fn try_profile_changed<'a>( &'a self, user_id: &'a UserId, from: u64, to: Option<u64>, ) -> impl Stream<Item = Result<ProfileChange<'a>>> + Send + 'a
Streams the user’s logged profile fields, surfacing read failures.
The range excludes from and includes to, when provided. Fields and user
IDs borrow the cursor and must be consumed or owned before it advances.
Source§impl Service
impl Service
Sourcepub fn room_profile_changed<'a>(
&'a self,
room_id: &'a RoomId,
from: u64,
to: Option<u64>,
) -> impl Stream<Item = ProfileChange<'a>> + Send + 'a
pub fn room_profile_changed<'a>( &'a self, room_id: &'a RoomId, from: u64, to: Option<u64>, ) -> impl Stream<Item = ProfileChange<'a>> + Send + 'a
Streams the profile fields any member of the room changed.
The range works as it does for a single user. A member appears once per field they changed, however many of the caller’s rooms they share. Storage and decoding failures are logged and skipped.
Source§impl Service
impl Service
Sourcepub fn try_room_profile_changed<'a>(
&'a self,
room_id: &'a RoomId,
from: u64,
to: Option<u64>,
) -> impl Stream<Item = Result<ProfileChange<'a>>> + Send + 'a
pub fn try_room_profile_changed<'a>( &'a self, room_id: &'a RoomId, from: u64, to: Option<u64>, ) -> impl Stream<Item = Result<ProfileChange<'a>>> + Send + 'a
Streams a room’s logged profile fields, surfacing read failures.
The range excludes from and includes to, when provided. Fields and user
IDs borrow the cursor and must be consumed or owned before it advances.
Source§impl Service
impl Service
fn profile_changed_user_or_room<'a>( &'a self, user_or_room_id: &'a str, from: u64, to: Option<u64>, ) -> impl Stream<Item = Result<ProfileChange<'a>>> + Send + 'a
Source§impl Service
impl Service
Sourcepub async fn profile_key<T>(
&self,
user_id: &UserId,
profile_key: &ProfileFieldName,
) -> Result<T>where
T: for<'de> Deserialize<'de> + Send,
pub async fn profile_key<T>(
&self,
user_id: &UserId,
profile_key: &ProfileFieldName,
) -> Result<T>where
T: for<'de> Deserialize<'de> + Send,
Gets a specific user profile key
Source§impl Service
impl Service
Sourcepub async fn fill_content(
&self,
user_id: &UserId,
content: RoomMemberEventContent,
) -> RoomMemberEventContent
pub async fn fill_content( &self, user_id: &UserId, content: RoomMemberEventContent, ) -> RoomMemberEventContent
Fill membership content with the user’s display name and avatar.
Profile lookup failures clear the corresponding fields. All other content fields are preserved.
Source§impl Service
impl Service
Sourceasync fn enforce_profile_size(
&self,
user_id: &UserId,
key: &str,
value: &Value,
) -> Result
async fn enforce_profile_size( &self, user_id: &UserId, key: &str, value: &Value, ) -> Result
Reject a prospective profile write exceeding the MSC4133 64 KiB cap.
The candidate value replaces the stored field for the size calculation. A stored field that no longer parses is logged and left out of the total, so it cannot block writes to the other fields; removals skip this check.
Trait Implementations§
Source§impl Service for Service
impl Service for Service
Source§fn build(args: &Args<'_>) -> Result<Arc<Self>>
fn build(args: &Args<'_>) -> Result<Arc<Self>>
Source§fn name(&self) -> &str
fn name(&self) -> &str
crate::service::make_name(std::module_path!())Source§fn worker<'async_trait>(
self: Arc<Self>,
) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>where
Self: 'async_trait,
fn worker<'async_trait>(
self: Arc<Self>,
) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>where
Self: 'async_trait,
Source§fn interrupt<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn interrupt<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn clear_cache<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear_cache<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn memory_usage<'life0, 'life1, 'async_trait>(
&'life0 self,
_out: &'life1 mut (dyn Write + Send),
) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn memory_usage<'life0, 'life1, 'async_trait>(
&'life0 self,
_out: &'life1 mut (dyn Write + Send),
) -> Pin<Box<dyn Future<Output = Result> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn unconstrained(&self) -> bool
fn unconstrained(&self) -> bool
Auto Trait Implementations§
impl !RefUnwindSafe for Service
impl !UnwindSafe for Service
impl Freeze for Service
impl Send for Service
impl Sync for Service
impl Unpin for Service
impl UnsafeUnpin for Service
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> ExpectInto for T
impl<T> ExpectInto for T
Source§impl<T> Expected for T
impl<T> Expected for T
Source§fn expected_add(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedAdd,
fn expected_add(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedAdd,
rhs with an expectation that the operation is valid. Read moreSource§fn expected_sub(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedSub,
fn expected_sub(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedSub,
rhs with an expectation that the operation is valid. Read moreSource§fn expected_mul(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedMul,
fn expected_mul(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedMul,
rhs with an expectation that the operation is valid. Read moreSource§fn expected_div(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedDiv,
fn expected_div(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedDiv,
rhs with an expectation that the operation is valid. Read moreSource§fn expected_rem(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedRem,
fn expected_rem(self, rhs: Self) -> Selfwhere
Self: Sized + CheckedRem,
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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 moreimpl<T> JsonCastable<CanonicalJsonValue> for T
impl<T> JsonCastable<Value> for T
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§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();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§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();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§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();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§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();§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.
§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);§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
500 Internal Server responses. Read moreSource§impl<T> Tried for T
impl<T> Tried for T
Source§fn try_add(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedAdd,
fn try_add(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedAdd,
rhs with checked arithmetic. Read moreSource§fn try_sub(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedSub,
fn try_sub(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedSub,
rhs with checked arithmetic. Read moreSource§fn try_mul(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedMul,
fn try_mul(self, rhs: Self) -> Result<Self, Error>where
Self: Sized + CheckedMul,
rhs with checked arithmetic. Read more