Under heavy development. This site describes the intended 1.0 language. Current features and performance vary. Development status
Sn50SnThe SnAPI programming language
Development · Evolving reference

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. This reference includes the intended 1.0 design; features may be incomplete in the current compiler. 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