Under heavy development. This site describes the intended 1.0 language. Current features and performance vary. Development status
Sn50SnThe SnAPI programming language
0.2.0 Preview 1 · Frozen documentation

ProcessStreamCompletion

Owns the final process outcome and all transferred stream owners. Returned even after process/stream/admission failure so captured bytes remain inspectable. Movement/destruction invalidates aliases into these fields. No child, raw callback context or borrowed native buffer remains. Readonly access follows ordinary field mutability; concurrent mutation needs synchronization.

Sn is under heavy development. Reference extracted from this release’s bundled standard library. Public API examples are not an exhaustive compatibility test. Read the matching release guide for tested workflows and limitations. Read the status →

Module std.process

import std.process;

Public declaration contracts and authored examples. A page can document several related symbols. Implementation bodies are excluded.

ProcessStreamCompletion

pub final class ProcessStreamCompletion<I, O, E> where I: Movable where O: Movable where E: Movable

Owns the final process outcome and all transferred stream owners. Returned even after process/stream/admission failure so captured bytes remain inspectable. Movement/destruction invalidates aliases into these fields. No child, raw callback context or borrowed native buffer remains. Readonly access follows ordinary field mutability; concurrent mutation needs synchronization. I: Owned input stream representation. O: Owned stdout stream representation. E: Owned stderr stream representation.

ProcessStreamCompletion.Outcome

pub Outcome: Result<ProcessExit, ProcessStreamError>;

Detached child result or original native/channel error.

ProcessStreamCompletion.Input

pub Input: I;

Retained stdin owner with final read state.

ProcessStreamCompletion.Output

pub Output: O;

Retained stdout owner including bytes delivered before failure.

ProcessStreamCompletion.Errors

pub Errors: E;

Retained stderr owner independently of stdout.

ProcessStreamCompletion.init

pub init(mut Outcome: Result<ProcessExit, ProcessStreamError>, mut Input: I, mut Output: O, mut Errors: E)

Adopts final streams without additional native work. Outcome: Detached execution/admission outcome. Input: Consumed stdin owner. Output: Consumed stdout owner. Errors: Consumed stderr owner.

ProcessStreamCompletion.init

pub init(Source: readonly Self&) = delete;

Rejects implicit stream owner copies. Source: Existing completion.

ProcessStreamCompletion.init

pub init(Source: mut Self&&)

Transfers final streams using their declared move operations. Source: Existing completion; aliases are invalidated.

ProcessStreamCompletion.operator

pub fn operator =(Source: readonly Self&) -> void = delete;

Rejects implicit stream owner copies. Source: Existing completion. Return: No runtime result; this assignment is deleted and cannot be invoked.

ProcessStreamCompletion.operator

pub fn operator =(Source: mut Self&&) -> void
        where I: MoveAssignable where O: MoveAssignable where E: MoveAssignable

Replaces final streams when all three owners support move assignment. Pre: I, O and E satisfy MoveAssignable; move construction alone does not enable replacement. Source: Existing completion; nested self-move behavior applies. Return: No value after replacing the outcome and all three final stream owners.

Documentation snapshot: October 24, 2026 About versions ↗
Searching Development · language & standard library