Ver código fonte

Extract program-option crate (#2369)

* extract program-option crate

* update lock file

* update nits.sh

* missing dev dep

* mention Solana in description

* remove solana_program from program_option doc examples
Kevin Heavey 1 ano atrás
pai
commit
aab56622ed

+ 5 - 0
Cargo.lock

@@ -7059,6 +7059,7 @@ dependencies = [
  "solana-logger",
  "solana-msg",
  "solana-program-memory",
+ "solana-program-option",
  "solana-sanitize",
  "solana-sdk-macro",
  "solana-secp256k1-recover",
@@ -7079,6 +7080,10 @@ dependencies = [
  "solana-define-syscall",
 ]
 
+[[package]]
+name = "solana-program-option"
+version = "2.1.0"
+
 [[package]]
 name = "solana-program-runtime"
 version = "2.1.0"

+ 2 - 0
Cargo.toml

@@ -114,6 +114,7 @@ members = [
     "sdk/package-metadata-macro",
     "sdk/program",
     "sdk/program-memory",
+    "sdk/program-option",
     "sdk/serde-varint",
     "sdk/sha256-hasher",
     "sdk/signature",
@@ -417,6 +418,7 @@ solana-poh = { path = "poh", version = "=2.1.0" }
 solana-poseidon = { path = "poseidon", version = "=2.1.0" }
 solana-program = { path = "sdk/program", version = "=2.1.0", default-features = false }
 solana-program-memory = { path = "sdk/program-memory", version = "=2.1.0" }
+solana-program-option = { path = "sdk/program-option", version = "=2.1.0" }
 solana-program-runtime = { path = "program-runtime", version = "=2.1.0" }
 solana-program-test = { path = "program-test", version = "=2.1.0" }
 solana-pubsub-client = { path = "pubsub-client", version = "=2.1.0" }

+ 1 - 1
ci/nits.sh

@@ -29,7 +29,7 @@ declare print_free_tree=(
   ':sdk/**.rs'
   ':^sdk/cargo-build-sbf/**.rs'
   ':^sdk/msg/src/lib.rs'
-  ':^sdk/program/src/program_option.rs'
+  ':^sdk/program-option/src/lib.rs'
   ':^sdk/program/src/program_stubs.rs'
   ':programs/**.rs'
   ':^**bin**.rs'

+ 5 - 0
programs/sbf/Cargo.lock

@@ -5455,6 +5455,7 @@ dependencies = [
  "solana-hash",
  "solana-msg",
  "solana-program-memory",
+ "solana-program-option",
  "solana-sanitize",
  "solana-sdk-macro",
  "solana-secp256k1-recover",
@@ -5473,6 +5474,10 @@ dependencies = [
  "solana-define-syscall",
 ]
 
+[[package]]
+name = "solana-program-option"
+version = "2.1.0"
+
 [[package]]
 name = "solana-program-runtime"
 version = "2.1.0"

+ 13 - 0
sdk/program-option/Cargo.toml

@@ -0,0 +1,13 @@
+[package]
+name = "solana-program-option"
+description = "A C representation of Rust's Option, used in Solana programs."
+documentation = "https://docs.rs/solana-program-option"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
+
+[package.metadata.docs.rs]
+targets = ["x86_64-unknown-linux-gnu"]

+ 2 - 2
sdk/program/src/program_option.rs → sdk/program-option/src/lib.rs

@@ -172,7 +172,7 @@ impl<T> COption<T> {
     /// ```
     ///
     /// ```should_panic
-    /// # use solana_program::program_option::COption;
+    /// # use solana_program_option::COption;
     /// let x: COption<&str> = COption::None;
     /// x.expect("the world is ending"); // panics with `the world is ending`
     /// ```
@@ -205,7 +205,7 @@ impl<T> COption<T> {
     /// ```
     ///
     /// ```should_panic
-    /// # use solana_program::program_option::COption;
+    /// # use solana_program_option::COption;
     /// let x: COption<&str> = COption::None;
     /// assert_eq!(x.unwrap(), "air"); // fails
     /// ```

+ 1 - 0
sdk/program/Cargo.toml

@@ -43,6 +43,7 @@ solana-hash = { workspace = true, features = [
 ] }
 solana-msg = { workspace = true }
 solana-program-memory = { workspace = true }
+solana-program-option = { workspace = true }
 solana-sanitize = { workspace = true }
 solana-sdk-macro = { workspace = true }
 solana-secp256k1-recover = { workspace = true }

+ 1 - 2
sdk/program/src/lib.rs

@@ -508,7 +508,6 @@ pub mod native_token;
 pub mod nonce;
 pub mod program;
 pub mod program_error;
-pub mod program_option;
 pub mod program_pack;
 pub mod program_stubs;
 pub mod program_utils;
@@ -540,7 +539,7 @@ pub use solana_serde_varint as serde_varint;
 pub use solana_short_vec as short_vec;
 #[cfg(target_arch = "wasm32")]
 pub use wasm_bindgen::prelude::wasm_bindgen;
-pub use {solana_clock as clock, solana_msg::msg};
+pub use {solana_clock as clock, solana_msg::msg, solana_program_option as program_option};
 
 /// The [config native program][np].
 ///