pub enum InstallError {
NotAnApp,
InvalidSignature,
FluxEmulatorMissing,
BuiltInApp,
PublisherMismatch,
AppRunning,
Compatibility(CompatibilityError),
Fs(Error),
Internal,
}Expand description
Why an install did not happen. Every variant is a state the archive or the device is in, so the caller can say something specific without the server sending it a string.
Variants§
NotAnApp
The file is not a readable app archive, or breaks the archive format’s rules.
InvalidSignature
The archive’s manifest carries no valid publisher signature.
FluxEmulatorMissing
A Flux app, which only the Flux emulator can run, and the emulator is not installed.
BuiltInApp
The archive claims the app id of an app that ships with the firmware, which no installed app may replace.
PublisherMismatch
An app with this id is installed, but from another publisher, so this archive would be a different app taking over its permission grants and stored data rather than an update.
AppRunning
The app is already installed and running, so its bundle cannot be replaced.
Compatibility(CompatibilityError)
The manifest is valid but incompatible with this KeyOS release.
Fs(Error)
The filesystem refused an operation the install needed.
Internal
Anything else; the server logs what actually happened.
Trait Implementations§
Source§impl Archive for InstallErrorwhere
CompatibilityError: Archive,
Error: Archive,
impl Archive for InstallErrorwhere
CompatibilityError: Archive,
Error: Archive,
Source§type Archived = ArchivedInstallError
type Archived = ArchivedInstallError
Source§type Resolver = InstallErrorResolver
type Resolver = InstallErrorResolver
Source§fn resolve(
&self,
resolver: <Self as Archive>::Resolver,
out: Place<<Self as Archive>::Archived>,
)
fn resolve( &self, resolver: <Self as Archive>::Resolver, out: Place<<Self as Archive>::Archived>, )
§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize. Read moreSource§impl Clone for InstallError
impl Clone for InstallError
Source§fn clone(&self) -> InstallError
fn clone(&self) -> InstallError
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InstallError
impl Debug for InstallError
Source§impl<__D: Fallible + ?Sized> Deserialize<InstallError, __D> for Archived<InstallError>where
CompatibilityError: Archive,
<CompatibilityError as Archive>::Archived: Deserialize<CompatibilityError, __D>,
Error: Archive,
<Error as Archive>::Archived: Deserialize<Error, __D>,
impl<__D: Fallible + ?Sized> Deserialize<InstallError, __D> for Archived<InstallError>where
CompatibilityError: Archive,
<CompatibilityError as Archive>::Archived: Deserialize<CompatibilityError, __D>,
Error: Archive,
<Error as Archive>::Archived: Deserialize<Error, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<InstallError, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<InstallError, <__D as Fallible>::Error>
Source§impl<__S: Fallible + ?Sized> Serialize<__S> for InstallErrorwhere
CompatibilityError: Serialize<__S>,
Error: Serialize<__S>,
impl<__S: Fallible + ?Sized> Serialize<__S> for InstallErrorwhere
CompatibilityError: Serialize<__S>,
Error: Serialize<__S>,
Auto Trait Implementations§
impl Freeze for InstallError
impl RefUnwindSafe for InstallError
impl Send for InstallError
impl Sync for InstallError
impl Unpin for InstallError
impl UnsafeUnpin for InstallError
impl UnwindSafe for InstallError
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.