Skip to content
Snippets Groups Projects
Commit 96cd57a6 authored by Bastian Köcher's avatar Bastian Köcher Committed by Shawn Tabrizi
Browse files

Make use of `cfg(doc)` in `sp-runtime-interface` (#4673)

By using `cfg(doc)`, we can generate docs for modules which are only
available from `no_std`. This drastically improves the documentation for
the developers.
parent 26fa5193
No related merge requests found
...@@ -21,10 +21,10 @@ ...@@ -21,10 +21,10 @@
//! functions will prepare the parameters for the FFI boundary, call the external host function //! functions will prepare the parameters for the FFI boundary, call the external host function
//! exported into wasm and convert back the result. //! exported into wasm and convert back the result.
//! //!
//! [`generate`](bare_function_interface::generate) is the entry point for generating for each //! [`generate`] is the entry point for generating for each
//! trait method one bare function. //! trait method one bare function.
//! //!
//! [`function_for_method`](bare_function_interface::function_for_method) generates the bare //! [`function_for_method`] generates the bare
//! function per trait method. Each bare function contains both implementations. The implementations //! function per trait method. Each bare function contains both implementations. The implementations
//! are feature-gated, so that one is compiled for the native and the other for the wasm side. //! are feature-gated, so that one is compiled for the native and the other for the wasm side.
......
...@@ -49,6 +49,9 @@ pub trait IntoPreallocatedFFIValue: RIType { ...@@ -49,6 +49,9 @@ pub trait IntoPreallocatedFFIValue: RIType {
} }
/// Something that can be created from a ffi value. /// Something that can be created from a ffi value.
/// Implementations are safe to assume that the `arg` given to `from_ffi_value`
/// is only generated by the corresponding [`wasm::IntoFFIValue`](crate::wasm::IntoFFIValue)
/// implementation.
pub trait FromFFIValue: RIType { pub trait FromFFIValue: RIType {
/// As `Self` can be an unsized type, it needs to be represented by a sized type at the host. /// As `Self` can be an unsized type, it needs to be represented by a sized type at the host.
/// This `SelfInstance` is the sized type. /// This `SelfInstance` is the sized type.
......
...@@ -25,10 +25,10 @@ ...@@ -25,10 +25,10 @@
//! # Using a type in a runtime interface //! # Using a type in a runtime interface
//! //!
//! Any type that should be used in a runtime interface as argument or return value needs to //! Any type that should be used in a runtime interface as argument or return value needs to
//! implement [`RIType`]. The associated type `FFIType` is the type that is used in the FFI //! implement [`RIType`]. The associated type [`FFIType`](RIType::FFIType) is the type that is used
//! function to represent the actual type. For example `[T]` is represented by an `u64`. The slice //! in the FFI function to represent the actual type. For example `[T]` is represented by an `u64`.
//! pointer and the length will be mapped to an `u64` value. For more information, see the //! The slice pointer and the length will be mapped to an `u64` value. For more information see
//! implementation of [`RIType`] for `T`. The FFI function definition is used when calling from //! this [table](#ffi-type-and-conversion). The FFI function definition is used when calling from
//! the wasm runtime into the node. //! the wasm runtime into the node.
//! //!
//! Traits are used to convert from a type to the corresponding [`RIType::FFIType`]. //! Traits are used to convert from a type to the corresponding [`RIType::FFIType`].
...@@ -265,7 +265,7 @@ pub use codec; ...@@ -265,7 +265,7 @@ pub use codec;
pub(crate) mod impls; pub(crate) mod impls;
#[cfg(feature = "std")] #[cfg(feature = "std")]
pub mod host; pub mod host;
#[cfg(not(feature = "std"))] #[cfg(any(not(feature = "std"), doc))]
pub mod wasm; pub mod wasm;
pub mod pass_by; pub mod pass_by;
......
...@@ -26,7 +26,8 @@ use sp_std::cell::Cell; ...@@ -26,7 +26,8 @@ use sp_std::cell::Cell;
/// ///
/// It is unsafe behavior to call `Something::into_ffi_value().get()` and take this as input for /// It is unsafe behavior to call `Something::into_ffi_value().get()` and take this as input for
/// `from_ffi_value`. Implementations are safe to assume that the `arg` given to `from_ffi_value` /// `from_ffi_value`. Implementations are safe to assume that the `arg` given to `from_ffi_value`
/// is only generated by the corresponding `host::IntoFFIValue` implementation. /// is only generated by the corresponding [`host::IntoFFIValue`](crate::host::IntoFFIValue)
/// implementation.
pub trait FromFFIValue: Sized + RIType { pub trait FromFFIValue: Sized + RIType {
/// Create `Self` from the given ffi value. /// Create `Self` from the given ffi value.
fn from_ffi_value(arg: Self::FFIType) -> Self; fn from_ffi_value(arg: Self::FFIType) -> Self;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment