pub struct Session { /* private fields */ }Implementations§
Source§impl Session
impl Session
Sourcepub fn login(config: Config) -> Result<Self>
pub fn login(config: Config) -> Result<Self>
Examples found in repository?
More examples
examples/hello_gemstone.rs (line 16)
9fn main() -> gemstone_rs::Result<()> {
10 let config = Config::from_env()?;
11 println!("stone: {}", config.stone);
12 println!("host: {}", config.host);
13 println!("netldi: {}", config.netldi);
14 println!("username: {}", config.username);
15
16 let mut session = Session::login(config)?;
17 println!("session id: {}", session.session_id());
18 println!("3 + 4 => {:?}", session.eval("3 + 4")?);
19 session.logout()?;
20 Ok(())
21}examples/quickstart.rs (line 11)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}examples/codegen_discover_mapping.rs (line 11)
10fn main() -> codegen::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12 let class_ref = codegen::ClassRef::parse("Object").expect("Object is a valid class reference");
13 let output = std::env::temp_dir()
14 .join(format!(
15 "gemstone-rs-discovered-mapping-{}",
16 std::process::id()
17 ))
18 .join("gemstone_wrappers.rs");
19
20 let config = codegen::discover_mapping(&mut session, output, "BookingDraft", &class_ref)?;
21 println!(
22 "discovered mapping config:\n{}",
23 codegen::config_source(&config)
24 );
25 Ok(())
26}examples/oop_values.rs (line 9)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}examples/codegen_discover.rs (line 11)
10fn main() -> codegen::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12 let class_ref = codegen::ClassRef::parse("Object").expect("Object is a valid class reference");
13 let output = std::env::temp_dir()
14 .join(format!("gemstone-rs-discovered-{}", std::process::id()))
15 .join("gemstone_wrappers.rs");
16
17 let config = codegen::discover(&mut session, output, &[class_ref])?;
18 println!("discovered config:\n{}", codegen::config_source(&config));
19 println!("discovered classes: {}", config.classes.len());
20 println!(
21 "first class method count: {}",
22 config
23 .classes
24 .first()
25 .map_or(0, |class| class.methods.len())
26 );
27
28 Ok(())
29}Additional examples can be found in:
Sourcepub fn session_id(&self) -> i32
pub fn session_id(&self) -> i32
Examples found in repository?
examples/hello_gemstone.rs (line 17)
9fn main() -> gemstone_rs::Result<()> {
10 let config = Config::from_env()?;
11 println!("stone: {}", config.stone);
12 println!("host: {}", config.host);
13 println!("netldi: {}", config.netldi);
14 println!("username: {}", config.username);
15
16 let mut session = Session::login(config)?;
17 println!("session id: {}", session.session_id());
18 println!("3 + 4 => {:?}", session.eval("3 + 4")?);
19 session.logout()?;
20 Ok(())
21}pub fn is_logged_in(&self) -> bool
Sourcepub fn eval(&mut self, source: &str) -> Result<Value>
pub fn eval(&mut self, source: &str) -> Result<Value>
Examples found in repository?
More examples
examples/hello_gemstone.rs (line 18)
9fn main() -> gemstone_rs::Result<()> {
10 let config = Config::from_env()?;
11 println!("stone: {}", config.stone);
12 println!("host: {}", config.host);
13 println!("netldi: {}", config.netldi);
14 println!("username: {}", config.username);
15
16 let mut session = Session::login(config)?;
17 println!("session id: {}", session.session_id());
18 println!("3 + 4 => {:?}", session.eval("3 + 4")?);
19 session.logout()?;
20 Ok(())
21}examples/quickstart.rs (line 13)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}pub fn execute(&mut self, source: &str) -> Result<Oop>
pub fn eval_oop(&mut self, source: &str) -> Result<Oop>
pub fn perform( &mut self, receiver: Oop, selector: &str, args: &[Oop], ) -> Result<Value>
Sourcepub fn perform_oop(
&mut self,
receiver: Oop,
selector: &str,
args: &[Oop],
) -> Result<Oop>
pub fn perform_oop( &mut self, receiver: Oop, selector: &str, args: &[Oop], ) -> Result<Oop>
Examples found in repository?
examples/oop_values.rs (line 12)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}pub fn resolve(&mut self, name: &str) -> Result<Oop>
Sourcepub fn new_string(&mut self, value: &str) -> Result<Oop>
pub fn new_string(&mut self, value: &str) -> Result<Oop>
Examples found in repository?
examples/quickstart.rs (line 18)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}More examples
examples/oop_values.rs (line 18)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}examples/transactions.rs (line 15)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let committed_key = "GemStoneRsTransactionCommitted";
14 session.transaction(|session| {
15 let value = session.new_string("committed by gemstone-rs")?;
16 session.global_put(committed_key, value)
17 })?;
18
19 let committed = session.global_get(committed_key)?;
20 println!("committed value: {}", session.fetch_string(committed)?);
21
22 let aborted_key = "GemStoneRsTransactionAborted";
23 let aborted: gemstone_rs::Result<()> = session.transaction(|session| {
24 let value = session.new_string("this write should abort")?;
25 session.global_put(aborted_key, value)?;
26 Err(Error::IllegalOop {
27 operation: "intentional example abort",
28 })
29 });
30
31 println!("abort path returned error: {}", aborted.is_err());
32 session.global_put(committed_key, Oop::NIL)?;
33 Ok(())
34}Sourcepub fn new_symbol(&mut self, value: &str) -> Result<Oop>
pub fn new_symbol(&mut self, value: &str) -> Result<Oop>
Examples found in repository?
examples/oop_values.rs (line 25)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}pub fn new_object(&mut self, class_oop: Oop) -> Result<Oop>
pub fn smallint_oop(&self, value: i64) -> Oop
pub fn bool_oop(&self, value: bool) -> Oop
pub fn nil_oop(&self) -> Oop
pub fn float_oop(&mut self, value: f64) -> Result<Oop>
pub fn try_oop_to_float(&mut self, oop: Oop) -> Result<Option<f64>>
Sourcepub fn value_to_oop(&mut self, value: &Value) -> Result<Oop>
pub fn value_to_oop(&mut self, value: &Value) -> Result<Oop>
Examples found in repository?
examples/oop_values.rs (line 11)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}pub fn identity_for_oop(&self, oop: Oop) -> usize
pub fn cached_identity_for_oop(&self, oop: Oop) -> Option<usize>
pub fn identity_map_len(&self) -> usize
pub fn clear_identity_map(&self)
pub fn fetch_size(&mut self, oop: Oop) -> Result<i64>
Sourcepub fn fetch_string(&mut self, oop: Oop) -> Result<String>
pub fn fetch_string(&mut self, oop: Oop) -> Result<String>
Examples found in repository?
examples/quickstart.rs (line 22)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}More examples
examples/oop_values.rs (line 15)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}examples/transactions.rs (line 20)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let committed_key = "GemStoneRsTransactionCommitted";
14 session.transaction(|session| {
15 let value = session.new_string("committed by gemstone-rs")?;
16 session.global_put(committed_key, value)
17 })?;
18
19 let committed = session.global_get(committed_key)?;
20 println!("committed value: {}", session.fetch_string(committed)?);
21
22 let aborted_key = "GemStoneRsTransactionAborted";
23 let aborted: gemstone_rs::Result<()> = session.transaction(|session| {
24 let value = session.new_string("this write should abort")?;
25 session.global_put(aborted_key, value)?;
26 Err(Error::IllegalOop {
27 operation: "intentional example abort",
28 })
29 });
30
31 println!("abort path returned error: {}", aborted.is_err());
32 session.global_put(committed_key, Oop::NIL)?;
33 Ok(())
34}pub fn fetch_class(&mut self, oop: Oop) -> Result<Oop>
pub fn array_oops(&mut self, oop: Oop) -> Result<Vec<Oop>>
pub fn array_strings(&mut self, oop: Oop) -> Result<Vec<String>>
Sourcepub fn global_get(&mut self, symbol_name: &str) -> Result<Oop>
pub fn global_get(&mut self, symbol_name: &str) -> Result<Oop>
Examples found in repository?
examples/quickstart.rs (line 21)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}More examples
examples/transactions.rs (line 19)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let committed_key = "GemStoneRsTransactionCommitted";
14 session.transaction(|session| {
15 let value = session.new_string("committed by gemstone-rs")?;
16 session.global_put(committed_key, value)
17 })?;
18
19 let committed = session.global_get(committed_key)?;
20 println!("committed value: {}", session.fetch_string(committed)?);
21
22 let aborted_key = "GemStoneRsTransactionAborted";
23 let aborted: gemstone_rs::Result<()> = session.transaction(|session| {
24 let value = session.new_string("this write should abort")?;
25 session.global_put(aborted_key, value)?;
26 Err(Error::IllegalOop {
27 operation: "intentional example abort",
28 })
29 });
30
31 println!("abort path returned error: {}", aborted.is_err());
32 session.global_put(committed_key, Oop::NIL)?;
33 Ok(())
34}Sourcepub fn global_put(&mut self, symbol_name: &str, value: Oop) -> Result<()>
pub fn global_put(&mut self, symbol_name: &str, value: Oop) -> Result<()>
Examples found in repository?
examples/quickstart.rs (line 19)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}More examples
examples/transactions.rs (line 16)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let committed_key = "GemStoneRsTransactionCommitted";
14 session.transaction(|session| {
15 let value = session.new_string("committed by gemstone-rs")?;
16 session.global_put(committed_key, value)
17 })?;
18
19 let committed = session.global_get(committed_key)?;
20 println!("committed value: {}", session.fetch_string(committed)?);
21
22 let aborted_key = "GemStoneRsTransactionAborted";
23 let aborted: gemstone_rs::Result<()> = session.transaction(|session| {
24 let value = session.new_string("this write should abort")?;
25 session.global_put(aborted_key, value)?;
26 Err(Error::IllegalOop {
27 operation: "intentional example abort",
28 })
29 });
30
31 println!("abort path returned error: {}", aborted.is_err());
32 session.global_put(committed_key, Oop::NIL)?;
33 Ok(())
34}pub fn str_dict_get(&mut self, dict: Oop, key: &str) -> Result<Value>
pub fn str_dict_put(&mut self, dict: Oop, key: &str, value: Oop) -> Result<()>
Sourcepub fn retain_oop(&mut self, oop: Oop) -> Result<OopHandle<'_>>
pub fn retain_oop(&mut self, oop: Oop) -> Result<OopHandle<'_>>
Examples found in repository?
examples/oop_values.rs (line 20)
8fn main() -> gemstone_rs::Result<()> {
9 let mut session = Session::login(Config::from_env()?)?;
10
11 let seven = session.value_to_oop(&Value::SmallInt(7))?;
12 let printed = session.perform_oop(seven, "printString", &[])?;
13 println!(
14 "small integer printString: {}",
15 session.fetch_string(printed)?
16 );
17
18 let text = session.new_string("retained by gemstone-rs")?;
19 {
20 let handle = session.retain_oop(text)?;
21 println!("retained string OOP: {}", handle.oop().raw());
22 handle.release()?;
23 }
24
25 let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26 println!("new symbol OOP: {}", symbol.raw());
27 Ok(())
28}pub fn add_to_export_set(&mut self, oop: Oop) -> Result<()>
pub fn remove_from_export_set(&mut self, oop: Oop) -> Result<()>
pub fn needs_commit(&mut self) -> Result<bool>
pub fn in_transaction(&mut self) -> Result<bool>
pub fn commit(&mut self) -> Result<()>
pub fn abort(&mut self) -> Result<()>
Sourcepub fn transaction<T>(
&mut self,
body: impl FnOnce(&mut Session) -> Result<T>,
) -> Result<T>
pub fn transaction<T>( &mut self, body: impl FnOnce(&mut Session) -> Result<T>, ) -> Result<T>
Examples found in repository?
examples/transactions.rs (lines 14-17)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let committed_key = "GemStoneRsTransactionCommitted";
14 session.transaction(|session| {
15 let value = session.new_string("committed by gemstone-rs")?;
16 session.global_put(committed_key, value)
17 })?;
18
19 let committed = session.global_get(committed_key)?;
20 println!("committed value: {}", session.fetch_string(committed)?);
21
22 let aborted_key = "GemStoneRsTransactionAborted";
23 let aborted: gemstone_rs::Result<()> = session.transaction(|session| {
24 let value = session.new_string("this write should abort")?;
25 session.global_put(aborted_key, value)?;
26 Err(Error::IllegalOop {
27 operation: "intentional example abort",
28 })
29 });
30
31 println!("abort path returned error: {}", aborted.is_err());
32 session.global_put(committed_key, Oop::NIL)?;
33 Ok(())
34}pub fn commit_with_retry(&mut self, retries: usize) -> Result<()>
Sourcepub fn bridge_root(&mut self) -> Result<BridgeRoot<'_>>
pub fn bridge_root(&mut self) -> Result<BridgeRoot<'_>>
Examples found in repository?
examples/bridge_root_mapping.rs (line 48)
39fn main() -> gemstone_rs::Result<()> {
40 let mut session = Session::login(Config::from_env()?)?;
41
42 let payload = BookingDraft {
43 name: "Tariq".to_string(),
44 amount: 100,
45 currency: "GBP".to_string(),
46 };
47
48 let mut bridge_root = session.bridge_root()?;
49 let payload_oop = bridge_root.put_mapped("MyTestDict", &payload)?;
50 let stored = bridge_root.get_oop("MyTestDict")?;
51 assert_eq!(payload_oop, stored);
52
53 let loaded: BookingDraft = bridge_root.get_mapped("MyTestDict")?;
54 assert_eq!(loaded, payload);
55
56 println!("bridge root: {}", bridge_root.name());
57 println!("bridge root OOP: {}", bridge_root.oop().raw());
58 println!("MyTestDict OOP: {}", stored.raw());
59 println!("loaded payload: {loaded:?}");
60
61 bridge_root.commit()?;
62 Ok(())
63}More examples
examples/derive_mapping.rs (line 26)
24fn main() -> gemstone_rs::Result<()> {
25 let mut session = Session::login(Config::from_env()?)?;
26 let mut bridge_root = session.bridge_root()?;
27
28 let draft = BookingDraft {
29 amount: 100,
30 customer: CustomerDraft {
31 name: "Tariq".to_string(),
32 },
33 tags: vec!["priority".to_string(), "demo".to_string()],
34 };
35
36 bridge_root.transaction(|root| {
37 root.put_mapped("DerivedBookingDraft", &draft)?;
38 let loaded: BookingDraft = root.get_mapped("DerivedBookingDraft")?;
39 assert_eq!(loaded, draft);
40 root.put_with_key_type(
41 "DerivedBookingDraftSymbolKey",
42 BridgeKeyType::Symbol,
43 "symbol-key-ok",
44 )?;
45 root.remove("DerivedBookingDraft")?;
46 root.remove_with_key_type("DerivedBookingDraftSymbolKey", BridgeKeyType::Symbol)?;
47 println!("derived mapped payload: {loaded:?}");
48 println!("bridge root identity: {}", root.identity_id());
49 Ok(())
50 })?;
51
52 Ok(())
53}pub fn bridge_root_named( &mut self, name: impl Into<String>, ) -> Result<BridgeRoot<'_>>
Sourcepub fn logout(&mut self) -> Result<()>
pub fn logout(&mut self) -> Result<()>
Examples found in repository?
More examples
examples/hello_gemstone.rs (line 19)
9fn main() -> gemstone_rs::Result<()> {
10 let config = Config::from_env()?;
11 println!("stone: {}", config.stone);
12 println!("host: {}", config.host);
13 println!("netldi: {}", config.netldi);
14 println!("username: {}", config.username);
15
16 let mut session = Session::login(config)?;
17 println!("session id: {}", session.session_id());
18 println!("3 + 4 => {:?}", session.eval("3 + 4")?);
19 session.logout()?;
20 Ok(())
21}examples/quickstart.rs (line 25)
10fn main() -> gemstone_rs::Result<()> {
11 let mut session = Session::login(Config::from_env()?)?;
12
13 let value = session.eval("3 + 4")?;
14 assert_eq!(value, Value::SmallInt(7));
15 println!("GemStone eval ok: {value:?}");
16
17 let key = "GemStoneRsQuickstart";
18 let text = session.new_string("hello from gemstone-rs quickstart")?;
19 session.global_put(key, text)?;
20
21 let stored = session.global_get(key)?;
22 println!("{key}: {}", session.fetch_string(stored)?);
23
24 session.global_put(key, Oop::NIL)?;
25 session.logout()?;
26 Ok(())
27}Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Session
impl !RefUnwindSafe for Session
impl !Send for Session
impl !Sync for Session
impl Unpin for Session
impl UnsafeUnpin for Session
impl UnwindSafe for Session
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more