Skip to main content

Session

Struct Session 

Source
pub struct Session { /* private fields */ }

Implementations§

Source§

impl Session

Source

pub fn login(config: Config) -> Result<Self>

Examples found in repository?
examples/eval.rs (line 11)
9fn main() -> gemstone_rs::Result<()> {
10    let config = Config::from_env()?;
11    let mut session = Session::login(config)?;
12    let value = session.eval("3 + 4")?;
13
14    println!("{value:?}");
15
16    session.logout()?;
17    Ok(())
18}
More examples
Hide additional 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}
Source

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}
Source

pub fn is_logged_in(&self) -> bool

Source

pub fn eval(&mut self, source: &str) -> Result<Value>

Examples found in repository?
examples/eval.rs (line 12)
9fn main() -> gemstone_rs::Result<()> {
10    let config = Config::from_env()?;
11    let mut session = Session::login(config)?;
12    let value = session.eval("3 + 4")?;
13
14    println!("{value:?}");
15
16    session.logout()?;
17    Ok(())
18}
More examples
Hide additional 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}
Source

pub fn execute(&mut self, source: &str) -> Result<Oop>

Source

pub fn eval_oop(&mut self, source: &str) -> Result<Oop>

Source

pub fn perform( &mut self, receiver: Oop, selector: &str, args: &[Oop], ) -> Result<Value>

Source

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}
Source

pub fn resolve(&mut self, name: &str) -> Result<Oop>

Source

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
Hide additional 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}
Source

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}
Source

pub fn new_object(&mut self, class_oop: Oop) -> Result<Oop>

Source

pub fn smallint_oop(&self, value: i64) -> Oop

Source

pub fn bool_oop(&self, value: bool) -> Oop

Source

pub fn nil_oop(&self) -> Oop

Source

pub fn float_oop(&mut self, value: f64) -> Result<Oop>

Source

pub fn try_oop_to_float(&mut self, oop: Oop) -> Result<Option<f64>>

Source

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}
Source

pub fn identity_for_oop(&self, oop: Oop) -> usize

Source

pub fn cached_identity_for_oop(&self, oop: Oop) -> Option<usize>

Source

pub fn identity_map_len(&self) -> usize

Source

pub fn clear_identity_map(&self)

Source

pub fn fetch_size(&mut self, oop: Oop) -> Result<i64>

Source

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
Hide additional 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}
Source

pub fn fetch_class(&mut self, oop: Oop) -> Result<Oop>

Source

pub fn array_oops(&mut self, oop: Oop) -> Result<Vec<Oop>>

Source

pub fn array_strings(&mut self, oop: Oop) -> Result<Vec<String>>

Source

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
Hide additional 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}
Source

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
Hide additional 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}
Source

pub fn str_dict_get(&mut self, dict: Oop, key: &str) -> Result<Value>

Source

pub fn str_dict_put(&mut self, dict: Oop, key: &str, value: Oop) -> Result<()>

Source

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}
Source

pub fn add_to_export_set(&mut self, oop: Oop) -> Result<()>

Source

pub fn remove_from_export_set(&mut self, oop: Oop) -> Result<()>

Source

pub fn needs_commit(&mut self) -> Result<bool>

Source

pub fn in_transaction(&mut self) -> Result<bool>

Source

pub fn commit(&mut self) -> Result<()>

Source

pub fn abort(&mut self) -> Result<()>

Source

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}
Source

pub fn commit_with_retry(&mut self, retries: usize) -> Result<()>

Source

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
Hide additional 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}
Source

pub fn bridge_root_named( &mut self, name: impl Into<String>, ) -> Result<BridgeRoot<'_>>

Source

pub fn logout(&mut self) -> Result<()>

Examples found in repository?
examples/eval.rs (line 16)
9fn main() -> gemstone_rs::Result<()> {
10    let config = Config::from_env()?;
11    let mut session = Session::login(config)?;
12    let value = session.eval("3 + 4")?;
13
14    println!("{value:?}");
15
16    session.logout()?;
17    Ok(())
18}
More examples
Hide additional 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§

Source§

impl Drop for Session

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.