Silk

silk/native_filesystem

Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu.

Selected native filesystem declarations and affine descriptor ownership.

When to use

Use this boundary to implement OsFileSystem. Portable code requires FileSystem.

Details

Native records, flags, error capture and descriptor-relative traversal are selected source. Handles own one close obligation; explicit close reports failure and Drop preserves an earlier failure during structured unwinding. Native members are absent on unsupported supplies.

Import as NativeFileSystem with import silk.native_filesystem { NativeFileSystem }.

Public declarations: 3.

FileHandle

pub struct FileHandle

An affine descriptor with one close obligation, transferred by consuming operations.

DirectoryHandle

pub struct DirectoryHandle

An affine directory stream retaining an owned name across an insufficient-buffer retry.

Implementation Drop for DirectoryHandle

impl Drop for DirectoryHandle

NativeFileSystem

pub struct NativeFileSystem

Descriptor-relative filesystem operations with source-owned error and lifetime policy.

Associated function NativeFileSystem.openFile

pub effect<'env> fn openFile<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], writing: bool, operation: i32) -> FileHandle ! FileError

Opens and validates a regular file; writes truncate only after successful kind inspection.

Associated function NativeFileSystem.openDirectory

pub effect<'env> fn openDirectory<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], operation: i32) -> DirectoryHandle ! FileError

Opens a directory and transfers its descriptor to a stream only after fdopendir succeeds.

Associated function NativeFileSystem.inspect

pub effect<'env> fn inspect<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], outputKind: &'life2 mut i32, length: &'life3 mut usize, operation: i32) -> () ! FileError

Inspects a no-follow child and returns regular-file or directory metadata.

Associated function NativeFileSystem.command

pub effect<'env> fn command<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], command: i32, operation: i32) -> () ! FileError

Creates or removes one normalized child, rejecting replacement through symlinks.

Associated function NativeFileSystem.readFile

pub effect<'env> fn readFile<'life0: 'env, 'life1: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.FileHandle, output: &'life1 mut [u8], operation: i32) -> usize ! FileError

Reads one checked prefix, retrying EINTR and leaving the remaining initialized tail unchanged.

Associated function NativeFileSystem.writeFile

pub effect<'env> fn writeFile<'life0: 'env, 'life1: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.FileHandle, input: &'life1 [u8], operation: i32) -> () ! FileError

Completes initialized bytes, advancing after positive counts and preserving failure prefixes.

Associated function NativeFileSystem.next

pub effect<'env> fn next<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'life4: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.DirectoryHandle, output: &'life1 mut [u8], count: &'life2 mut usize, required: &'life3 mut usize, outputKind: &'life4 mut i32, operation: i32) -> bool ! FileError

Copies the next owned byte name, retaining it when output capacity is insufficient.

Details

False reports required capacity without advancing; true with zero count is latched EOF.

Associated function NativeFileSystem.createUnique

pub effect<'env> fn createUnique<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'life4: 'env, 'life5: 'env, 'life6: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], prefix: &'life2 [u8], counter: &'life3 mut u64, output: &'life4 mut [u8], count: &'life5 mut usize, required: &'life6 mut usize, operation: i32) -> bool ! FileError

Exclusively creates one predictable counter name, retrying at most 128 collisions.

Associated function NativeFileSystem.closeFile

pub effect<'static> fn closeFile(value: FileHandle, operation: FileOperation) -> () ! FileError

Consumes a file and reports its one close attempt, without retrying EINTR.

Associated function NativeFileSystem.closeDirectory

pub effect<'static> fn closeDirectory(value: DirectoryHandle, operation: FileOperation) -> () ! FileError

Consumes a directory stream and reports its one closedir attempt.

On this page