pub enum WorkspaceRootError {
Unresolvable {
reason: String,
},
NotAbsolute {
path: String,
},
NotUnicode {
path: String,
},
ShapeChanging {
path: String,
character: &'static str,
},
PlaceholderMisplaced {
placement: &'static str,
},
NotSpawnable {
path: String,
},
CreationFailed {
path: String,
error: String,
},
}Expand description
Why the workspace root could not be resolved or spliced into a declared command.
Every variant is terminal at dispatch time: the root is a property of the server’s configuration and filesystem, so retrying the dispatch cannot change it.
Variants§
Unresolvable
The aion home itself could not be resolved, so there is no root to derive.
NotAbsolute
The resolved root is not an absolute path.
A relative root resolves against the server’s current directory, so the same recorded history would name a different location after a restart from elsewhere.
NotUnicode
The resolved root is not valid UTF-8, so it has no faithful spelling inside a declared command string.
ShapeChanging
The resolved root contains a character that would change how the declared command parses after splicing.
Fields
PlaceholderMisplaced
A placeholder occurrence in the declared command is not a whole, unquoted argv word, so the spliced root would become a fragment of some larger word instead of the path the server resolved.
NotSpawnable
The resolved root contains a NUL byte, so no process can be launched in a path spliced with it.
The command-splicing path refuses NUL under
WorkspaceRootError::ShapeChanging alongside the characters that
would reshape a parse. A harness SETTING is never parsed, so NUL is the
only one of that set which still bites — and it bites for its own
reason, one layer lower: execve takes NUL-terminated strings, so a
path carrying one cannot be handed to the kernel at all.
CreationFailed
The root directory does not exist and could not be created.
Trait Implementations§
Source§impl Clone for WorkspaceRootError
impl Clone for WorkspaceRootError
Source§fn clone(&self) -> WorkspaceRootError
fn clone(&self) -> WorkspaceRootError
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 WorkspaceRootError
impl Debug for WorkspaceRootError
Source§impl Display for WorkspaceRootError
impl Display for WorkspaceRootError
impl Eq for WorkspaceRootError
Source§impl Error for WorkspaceRootError
impl Error for WorkspaceRootError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for WorkspaceRootError
impl PartialEq for WorkspaceRootError
impl StructuralPartialEq for WorkspaceRootError
Auto Trait Implementations§
impl Freeze for WorkspaceRootError
impl RefUnwindSafe for WorkspaceRootError
impl Send for WorkspaceRootError
impl Sync for WorkspaceRootError
impl Unpin for WorkspaceRootError
impl UnsafeUnpin for WorkspaceRootError
impl UnwindSafe for WorkspaceRootError
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
Source§fn into_maybe_undefined(self) -> MaybeUndefined<T>
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
Source§fn into_option(self) -> Option<T>
fn into_option(self) -> Option<T>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request