Add rand dep error to app faq (#12568)

This commit is contained in:
Jack May
2020-09-29 20:16:53 -07:00
committed by GitHub
parent 6156dc300d
commit 90714941b7

View File

@ -28,19 +28,6 @@ during execution. The following operations incur a cost:
- Cross-program invocations incur a base cost and the cost of the program - Cross-program invocations incur a base cost and the cost of the program
invoked. invoked.
## Failure to compiler due to `rand` incompatibility
Programs are constrained to run deterministically, so random numbers are not
available. Sometimes a program may depend on a crate that depends itself on
`rand` even if the program does not use any of the random number functionality.
If a program depends on `rand`, the compilation will fail because there is not
`get-random` support for Solana. To work around this dependency issue, add the
following dependency to the program's `Cargo.toml`:
```
getrandom = { version = "0.1.14", features = ["dummy"] }
```
## Float Rust types ## Float Rust types
Programs support a limited subset of Rust's float operations, though they Programs support a limited subset of Rust's float operations, though they
@ -87,6 +74,32 @@ cross-program invocation that requires a signed program address, but the passed
signer seeds passed to `invoke_signed` don't match the signer seeds used to signer seeds passed to `invoke_signed` don't match the signer seeds used to
create the program address (`create_program_address`). create the program address (`create_program_address`).
## `rand` dependency causes compilation failure
Programs are constrained to run deterministically, so random numbers are not
available. Sometimes a program may depend on a crate that depends itself on
`rand` even if the program does not use any of the random number functionality.
If a program depends on `rand`, the compilation will fail because there is no
`get-random` support for Solana. The error will typically look like this:
```
error: target is not supported, for more information see: https://docs.rs/getrandom/#unsupported-targets
--> /Users/jack/.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.1.14/src/lib.rs:257:9
|
257 | / compile_error!("\
258 | | target is not supported, for more information see: \
259 | | https://docs.rs/getrandom/#unsupported-targets\
260 | | ");
| |___________^
```
To work around this dependency issue, add the following dependency to the
program's `Cargo.toml`:
```
getrandom = { version = "0.1.14", features = ["dummy"] }
```
## Rust restrictions ## Rust restrictions
There are some Rust limitations since programs run in a resource-constrained, There are some Rust limitations since programs run in a resource-constrained,