pub struct FileSystemCapabilities { /* private fields */ }Expand description
Stable typed capability support for one configured filesystem.
Capabilities have one of two support strengths: conditional capabilities may be attempted and can still be rejected for an individual request, while guaranteed capabilities are promised for every valid request in scope. Derived capabilities must not be stronger than their base capability.
§Examples
use qubit_fs::metadata::{FileSystemCapabilities, FileSystemCapability,
FileSystemCapabilitySupport};
let capabilities = FileSystemCapabilities::new()
.with_conditional(FileSystemCapability::Read)
.with_conditional(FileSystemCapability::RangeRead);
assert_eq!(capabilities.support(FileSystemCapability::RangeRead),
FileSystemCapabilitySupport::Conditional);
assert_eq!(capabilities.support(FileSystemCapability::Write),
FileSystemCapabilitySupport::Unsupported);
assert!(capabilities.missing_dependency().is_none());
let invalid = FileSystemCapabilities::new()
.with_guaranteed(FileSystemCapability::RangeRead)
.with_conditional(FileSystemCapability::Read);
assert_eq!(invalid.missing_dependency(), Some((
FileSystemCapability::RangeRead, FileSystemCapability::Read)));Implementations§
Source§impl FileSystemCapabilities
impl FileSystemCapabilities
Sourcepub const fn with_conditional(self, capability: FileSystemCapability) -> Self
pub const fn with_conditional(self, capability: FileSystemCapability) -> Self
Returns a copy with one additional conditional capability.
Sourcepub const fn with_guaranteed(self, capability: FileSystemCapability) -> Self
pub const fn with_guaranteed(self, capability: FileSystemCapability) -> Self
Returns a copy with one additional guaranteed capability.
Sourcepub const fn set_support(
self,
capability: FileSystemCapability,
support: FileSystemCapabilitySupport,
) -> Self
pub const fn set_support( self, capability: FileSystemCapability, support: FileSystemCapabilitySupport, ) -> Self
Replaces the support status of one capability.
Sourcepub const fn support(
&self,
capability: FileSystemCapability,
) -> FileSystemCapabilitySupport
pub const fn support( &self, capability: FileSystemCapability, ) -> FileSystemCapabilitySupport
Returns the support status of capability.
Sourcepub const fn supports(&self, capability: FileSystemCapability) -> bool
pub const fn supports(&self, capability: FileSystemCapability) -> bool
Returns whether the provider can attempt capability.
Sourcepub const fn guarantees(&self, capability: FileSystemCapability) -> bool
pub const fn guarantees(&self, capability: FileSystemCapability) -> bool
Returns whether capability is guaranteed in this filesystem scope.
Sourcepub fn iter(&self) -> impl Iterator<Item = FileSystemCapability> + '_
pub fn iter(&self) -> impl Iterator<Item = FileSystemCapability> + '_
Iterates advertised capabilities in stable discriminant order.
§Returns
An iterator over every capability contained in this set.
Sourcepub fn iter_with_support(
&self,
) -> impl Iterator<Item = (FileSystemCapability, FileSystemCapabilitySupport)> + '_
pub fn iter_with_support( &self, ) -> impl Iterator<Item = (FileSystemCapability, FileSystemCapabilitySupport)> + '_
Iterates advertised capabilities with their support status.
Sourcepub fn missing_dependency(
&self,
) -> Option<(FileSystemCapability, FileSystemCapability)>
pub fn missing_dependency( &self, ) -> Option<(FileSystemCapability, FileSystemCapability)>
Returns the first advertised capability whose required base capability is absent.
None means that every advertised derived capability has its required
base capability. The returned pair contains the derived capability
followed by the missing base capability.
§Returns
Some with the first derived capability and missing base capability,
or None when no advertised dependency is missing.