[][src]Crate sgx_tstd

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

alloc

Memory allocation APIs

any

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

array

Implementations of things like Eq for fixed-length arrays up to a certain length. Eventually, we should be able to generalize to all lengths.

ascii
backtrace

Support for capturing a stack backtrace of an OS thread

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.

debug
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.

future

Asynchronous values.

hash

Generic hashing support.

hint

Hints to compiler that affects how code should be emitted or optimized.

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.

pin

Types that pin data to its location in memory.

prelude

The Rust Prelude.

primitive

This module reexports the primitive types to allow usage that is not possibly shadowed by other declared types.

ptr

Manually manage memory through raw pointers.

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 API and 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_tstd.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.

task

Types and Traits for working with asynchronous tasks.

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>.

intrinsicsExperimental

Compiler intrinsics.

rawExperimental

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

Macros

__thread_local_inner
assert

Asserts that a boolean expression is true at runtime.

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

Evaluates boolean combinations of configuration flags at compile-time.

cfg_if
column

Expands to the column number at which it was invoked.

compile_error

Causes compilation to fail with the given error message when encountered.

concat

Concatenates literals into a static string slice.

dbg
debug_assert

Asserts 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.

env

Inspects an environment variable at compile time.

eprint

Prints to the standard error.

eprintln

Prints to the standard error, with a newline.

file

Expands to the file name in which it was invoked.

format

Creates a String using interpolation of runtime expressions.

format_args

Constructs parameters for the other string-formatting macros.

global_ctors_object

global_ctors_object is the base macro of implementing constructors.

global_dtors_object
include

Parses a file as an expression or an item according to the context.

include_bytes

Includes a file as a reference to a byte array.

include_str

Includes a utf8-encoded file as a string.

is_cpu_feature_supported
is_x86_feature_detected
line

Expands to the line number on which it was invoked.

matches

Returns whether the given expression matches any of the given patterns.

module_path

Expands to a string that represents the current module path.

option_env

Optionally inspects an environment variable at compile time.

panic

Panics the current thread.

print

Prints to the standard output.

println

Prints to the standard output, with a newline.

stringify

Stringifies its arguments.

todo

Indicates unfinished code.

tryDeprecated

Unwraps a result or propagates its error.

unimplemented

Indicates unimplemented code by panicking with a message of "not implemented".

unreachable

Indicates unreachable code.

vec

Creates a Vec containing the arguments.

write

Writes formatted data into a buffer.

writeln

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

asmExperimental

Inline assembly.

concat_identsExperimental

Concatenates identifiers into one identifier.

format_args_nlExperimental

Same as format_args, but adds a newline in the end.

global_asmExperimental

Module-level inline assembly.

log_syntaxExperimental

Prints passed tokens into the standard output.

thread_local

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

trace_macrosExperimental

Enables or disables tracing functionality used for debugging other macros.

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.