pub struct FsLimits {
pub max_total_bytes: u64,
pub max_file_size: u64,
pub max_file_count: u64,
}Expand description
Filesystem resource limits.
Controls maximum resource consumption for in-memory filesystems.
Applied to both InMemoryFs and OverlayFs.
§Example
use bashkit::{Bash, FsLimits, InMemoryFs};
use std::sync::Arc;
// Create filesystem with custom limits
let limits = FsLimits::new()
.max_total_bytes(50_000_000) // 50MB total
.max_file_size(5_000_000) // 5MB per file
.max_file_count(1000); // 1000 files max
let fs = Arc::new(InMemoryFs::with_limits(limits));
let bash = Bash::builder().fs(fs).build();§Default Limits
| Limit | Default | Purpose |
|---|---|---|
max_total_bytes | 100MB | Total filesystem memory |
max_file_size | 10MB | Single file size |
max_file_count | 10,000 | Number of files |
Fields§
§max_total_bytes: u64Maximum total bytes across all files. Default: 100MB (100,000,000 bytes)
max_file_size: u64Maximum size of a single file in bytes. Default: 10MB (10,000,000 bytes)
max_file_count: u64Maximum number of files (not including directories). Default: 10,000
Implementations§
Source§impl FsLimits
impl FsLimits
Sourcepub fn new() -> Self
pub fn new() -> Self
Create new limits with defaults.
§Example
use bashkit::FsLimits;
let limits = FsLimits::new();
assert_eq!(limits.max_total_bytes, 100_000_000);Sourcepub fn max_total_bytes(self, bytes: u64) -> Self
pub fn max_total_bytes(self, bytes: u64) -> Self
Set maximum total filesystem size.
§Example
use bashkit::FsLimits;
let limits = FsLimits::new().max_total_bytes(50_000_000); // 50MBSourcepub fn max_file_size(self, bytes: u64) -> Self
pub fn max_file_size(self, bytes: u64) -> Self
Set maximum single file size.
§Example
use bashkit::FsLimits;
let limits = FsLimits::new().max_file_size(1_000_000); // 1MBSourcepub fn max_file_count(self, count: u64) -> Self
pub fn max_file_count(self, count: u64) -> Self
Set maximum file count.
§Example
use bashkit::FsLimits;
let limits = FsLimits::new().max_file_count(100);Sourcepub fn check_total_bytes(
&self,
current: u64,
additional: u64,
) -> Result<(), FsLimitExceeded>
pub fn check_total_bytes( &self, current: u64, additional: u64, ) -> Result<(), FsLimitExceeded>
Check if adding bytes would exceed total limit.
Returns Ok(()) if within limits, Err(FsLimitExceeded) otherwise.
Sourcepub fn check_file_size(&self, size: u64) -> Result<(), FsLimitExceeded>
pub fn check_file_size(&self, size: u64) -> Result<(), FsLimitExceeded>
Check if a file size exceeds the limit.
Sourcepub fn check_file_count(&self, current: u64) -> Result<(), FsLimitExceeded>
pub fn check_file_count(&self, current: u64) -> Result<(), FsLimitExceeded>
Check if adding a file would exceed the count limit.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for FsLimits
impl RefUnwindSafe for FsLimits
impl Send for FsLimits
impl Sync for FsLimits
impl Unpin for FsLimits
impl UnwindSafe for FsLimits
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
Mutably borrows from an owned value. Read more