#[non_exhaustive]pub struct PendingTaskInfo {
pub task_kind: String,
pub identifier: String,
pub received_at: f64,
pub consumed_at: Option<f64>,
}Expand description
Information about a pending iOS background task that launched the app.
Returned by getPendingBgTask() on iOS when the app was launched by iOS
for a background task (BGAppRefreshTask or BGProcessingTask). Used by the
Rust auto-start logic to detect OS-initiated launches and automatically
start the service if desired_running is true.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.task_kind: StringThe kind of background task: “refresh” or “processing”.
identifier: StringThe task identifier (e.g. “com.example.app.bg-refresh”).
received_at: f64Epoch timestamp (seconds) when the task was received by the native layer.
consumed_at: Option<f64>Epoch timestamp (seconds) when the pending task was consumed by the Rust
auto-start logic. None until clear_pending_bg_task is called.
Implementations§
Source§impl PendingTaskInfo
impl PendingTaskInfo
Sourcepub fn from_pending_payload(value: &Value) -> Result<Option<Self>, Error>
pub fn from_pending_payload(value: &Value) -> Result<Option<Self>, Error>
Resolve a raw getPendingBgTask payload to an active pending task.
Enforces the H5/M14 invariant pending ⟺ consumedAt == nil: a payload
with a null taskKind (no record) or a non-null consumedAt
(already consumed/stale) yields None; only a fresh, unconsumed record
is surfaced. This mirrors the Swift getPendingBgTask gate on the Rust
side so a consumed record can’t re-arm a cold auto-start even if the
native payload still carries the keys — gating on consumed_at, not
only taskKind.is_null().
Trait Implementations§
Source§impl Clone for PendingTaskInfo
impl Clone for PendingTaskInfo
Source§fn clone(&self) -> PendingTaskInfo
fn clone(&self) -> PendingTaskInfo
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PendingTaskInfo
impl Debug for PendingTaskInfo
Source§impl<'de> Deserialize<'de> for PendingTaskInfo
impl<'de> Deserialize<'de> for PendingTaskInfo
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for PendingTaskInfo
impl PartialEq for PendingTaskInfo
Source§impl Serialize for PendingTaskInfo
impl Serialize for PendingTaskInfo
impl StructuralPartialEq for PendingTaskInfo
Auto Trait Implementations§
impl Freeze for PendingTaskInfo
impl RefUnwindSafe for PendingTaskInfo
impl Send for PendingTaskInfo
impl Sync for PendingTaskInfo
impl Unpin for PendingTaskInfo
impl UnsafeUnpin for PendingTaskInfo
impl UnwindSafe for PendingTaskInfo
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
impl<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
Source§fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
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> 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 more