about summary refs log tree commit diff
path: root/users
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2022-09-01T16·53-0700
committerclbot <clbot@tvl.fyi>2022-09-06T18·09+0000
commitdb9cb70d5d7807adff255e21a04d78c5700d1260 (patch)
tree722ba88d423735841fe0c4d9358310ee7c6164ea /users
parente23a55687374d81bb55380081f137873222437f4 (diff)
feat(wpcarro/rust): Define Rc<T> example r/4687
My foray into "smart pointer" land.

Change-Id: I4ca775c72168dd34d90bf88fa41149867cd7fdae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6244
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Diffstat (limited to 'users')
-rw-r--r--users/wpcarro/scratch/rust/shell.nix2
-rw-r--r--users/wpcarro/scratch/rust/src/main.rs3
-rw-r--r--users/wpcarro/scratch/rust/src/rc/mod.rs12
3 files changed, 15 insertions, 2 deletions
diff --git a/users/wpcarro/scratch/rust/shell.nix b/users/wpcarro/scratch/rust/shell.nix
index 064e7d8bb3..98e2dbf4b2 100644
--- a/users/wpcarro/scratch/rust/shell.nix
+++ b/users/wpcarro/scratch/rust/shell.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ pkgs ? import <nixpkgs> { }, ... }:
 
 pkgs.mkShell {
   buildInputs = [
diff --git a/users/wpcarro/scratch/rust/src/main.rs b/users/wpcarro/scratch/rust/src/main.rs
index 185e7236c5..671b330930 100644
--- a/users/wpcarro/scratch/rust/src/main.rs
+++ b/users/wpcarro/scratch/rust/src/main.rs
@@ -3,6 +3,7 @@ use serde_json::{json, Value};
 
 mod display;
 mod json;
+mod rc;
 mod stdin;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -10,5 +11,5 @@ mod stdin;
 ////////////////////////////////////////////////////////////////////////////////
 
 fn main() {
-    stdin::example();
+    rc::example();
 }
diff --git a/users/wpcarro/scratch/rust/src/rc/mod.rs b/users/wpcarro/scratch/rust/src/rc/mod.rs
new file mode 100644
index 0000000000..67251ca6aa
--- /dev/null
+++ b/users/wpcarro/scratch/rust/src/rc/mod.rs
@@ -0,0 +1,12 @@
+// Playing around with Rust's "smart pointers". Starting off with a wrapper type
+// that allows multiple readers (owners?) of some data.
+
+use std::rc::Rc;
+
+pub fn example() {
+    let five = Rc::new(5);
+    let x = Rc::clone(&five);
+    let y = Rc::clone(&five);
+    let z = Rc::clone(&five);
+    println!("result: {}", *x + *y + *z)
+}