Crate sgx_tstd[][src]

The Rust SGX SDK Standard Library

The Rust SGX standard library (previously named as sgx_tstdc) is the foundation of portable Rust SGX SDK, a set of minimal and battle-tested shared abstractions for the Rust SGX ecosystem. Similar to Rust's libstd, it offers core types, like [Vec<T>] and [Option<T>], library-defined operations on language primitives, standard macros, [I/O] and [multithreading], among [many other things][other].

std is available to all Rust crates by default, just as if each one contained an extern crate sgx_tstd as std; import at the [crate root]. Therefore the standard library can be accessed in [use] statements through the path std, as in [use std::env], or in expressions through the absolute path ::std, as in [::std::env::args].

Re-exports

pub use self::thread::rsgx_thread_self;
pub use self::thread::rsgx_thread_equal;

Modules

any

This module implements the Any trait, which enables dynamic typing of any 'static type through runtime reflection.

ascii
borrow

A module for working with borrowed data.

boxed

A pointer type for heap allocation.

cell

Shareable mutable containers.

char

A character type.

clone

The Clone trait for types that cannot be 'implicitly copied'.

cmp

Functionality for ordering and comparison.

collections

Collection types.

convert

Traits for conversions between types.

default

The Default trait for types which may have meaningful default values.

enclave
env

Inspection and manipulation of the process's environment.

error
f32

This module provides constants which are specific to the implementation of the f32 floating point data type.

f64

This module provides constants which are specific to the implementation of the f64 floating point data type.

ffi

Utilities related to FFI bindings.

fmt

Utilities for formatting and printing Strings.

hash

Generic hashing support.

i8

The 8-bit signed integer type.

i16

The 16-bit signed integer type.

i32

The 32-bit signed integer type.

i64

The 64-bit signed integer type.

i128

The 128-bit signed integer type.

io
isize

The pointer-sized signed integer type.

iter

Composable external iteration.

marker

Primitive traits and types representing basic properties of types.

mem

Basic functions for dealing with memory.

net

Networking primitives for TCP/UDP communication.

num

Additional functionality for numerics.

ops

Overloadable operators.

option

Optional values.

os
panic

Panic support in the standard library

path

Cross-platform path manipulation.

prelude
ptr

Raw, unsafe pointers, *const T, and *mut T.

rc

Single-threaded reference-counting pointers. 'Rc' stands for 'Reference Counted'.

result

Error handling with the Result type.

rt

Runtime services

sgxfs

Filesystem manipulation operations.

slice

A dynamically-sized view into a contiguous sequence, [T].

str

Unicode string slices.

string

A UTF-8 encoded, growable string.

sync

The Intel(R) Software Guard Extensions SDK already supports mutex and conditional variable synchronization mechanisms by means of the following APIand data types defined in the Types and Enumerations section. Some functions included in the trusted Thread Synchronization library may make calls outside the enclave (OCALLs). If you use any of the APIs below, you must first import the needed OCALL functions from sgx_tstdc.edl. Otherwise, you will get a linker error when the enclave is being built; see Calling Functions outside the Enclave for additional details. The table below illustrates the primitives that the Intel(R) SGX Thread Synchronization library supports, as well as the OCALLs that each API function needs.

thread

Native threads.

time

Temporal quantification.

u8

The 8-bit unsigned integer type.

u16

The 16-bit unsigned integer type.

u32

The 32-bit unsigned integer type.

u64

The 64-bit unsigned integer type.

u128

The 128-bit unsigned integer type.

untrusted
usize

The pointer-sized unsigned integer type.

vec

A contiguous growable array type with heap-allocated contents, written Vec<T>.

derived_property [
Experimental
]
intrinsics [
Experimental
]

rustc compiler intrinsics.

property [
Experimental
]
raw [
Experimental
]

Contains struct definitions for the layout of compiler built-in types.

Macros

__cfg_if_apply
__cfg_if_items
__thread_local_inner
assert_eq

Asserts that two expressions are equal to each other (using PartialEq).

assert_ne

Asserts that two expressions are not equal to each other (using PartialEq).

cfg_if
debug_assert

Ensure that a boolean expression is true at runtime.

debug_assert_eq

Asserts that two expressions are equal to each other.

debug_assert_ne

Asserts that two expressions are not equal to each other.

eprint

Macro for printing to the standard error.

eprintln

Macro for printing to the standard error, with a newline.

format

Creates a String using interpolation of runtime expressions.

global_ctors_object

global_ctors_object is the base macro of implementing constructors.

global_dtors_object
panic

The entry point for panic of Rust threads.

print

Macro for printing to the standard output.

println

Macro for printing to the standard output, with a newline. On all platforms, the newline is the LINE FEED character (\n/U+000A) alone (no additional CARRIAGE RETURN (\r/U+000D).

thread_local

Declare a new thread local storage key of type [sgx_trts::LocalKey].

try

Helper macro for reducing boilerplate code for matching Result together with converting downstream errors.

unimplemented

A standardized placeholder for marking unfinished code.

unreachable

A utility macro for indicating unreachable code.

vec

Creates a Vec containing the arguments.

write

Write formatted data into a buffer.

writeln

Write formatted data into a buffer, with a newline appended.

Functions

rsgx_cpuid

The rsgx_cpuid function performs the equivalent of a cpuid() function call or intrinisic which executes the CPUID instruction to query the host processor for the information about supported features.

rsgx_cpuidex

The rsgx_cpuidex function performs the equivalent of a cpuid_ex() function call or intrinisic which executes the CPUID instruction to query the host processor for the information about supported features.

rust_oom