Skip to content

Commit d42aa53

Browse files
ok, clippy is back :)
1 parent 6b723e2 commit d42aa53

8 files changed

Lines changed: 81 additions & 110 deletions

File tree

.direnv/flake-profile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
flake-profile-2-link
1+
flake-profile-3-link

.direnv/flake-profile-2-link

Lines changed: 0 additions & 1 deletion
This file was deleted.

.direnv/flake-profile-3-link

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/nix/store/3gj43axg67kbk0frm6zjbm5h5jjyn7qp-nix-shell-env

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "rusty-tokey"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77
[lib]

flake.lock

Lines changed: 45 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,41 @@
11
{
2-
description = "A flake providing a Python development shell with uv";
3-
42
inputs = {
5-
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
3+
fenix = {
4+
url = "github:nix-community/fenix";
5+
inputs.nixpkgs.follows = "nixpkgs";
6+
};
7+
nixpkgs.url = "nixpkgs/nixos-unstable";
68
flake-utils.url = "github:numtide/flake-utils";
79
};
8-
9-
outputs = { self, nixpkgs, flake-utils, ... }:
10+
11+
outputs = { self, fenix, flake-utils, nixpkgs }:
1012
flake-utils.lib.eachDefaultSystem (system:
1113
let
1214
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
15+
rust-toolchain = with fenix.packages.${system}; fromToolchainFile {
16+
file = ./rust-toolchain.toml;
17+
sha256 = "sha256-KUm16pHj+cRedf8vxs/Hd2YWxpOrWZ7UOrwhILdSJBU=";
18+
};
1319
in {
14-
pkgs.config.allowUnfree = true;
15-
devShells.default = pkgs.mkShell {
16-
buildInputs = [
17-
pkgs.python312
18-
pkgs.uv
19-
pkgs.claude-code
20+
devShell = pkgs.mkShell rec {
21+
buildInputs = with pkgs; [
22+
lld
23+
rust-toolchain
24+
pkg-config
25+
rust-analyzer
26+
graphviz
27+
websocat
28+
python312
29+
uv
30+
claude-code
2031
];
2132
shellHook = ''
2233
echo "Python: $(python --version)"
2334
echo "uv: $(uv --version)"
2435
'';
36+
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
2537
};
2638
}
2739
);
2840
}
41+

rust-toolchain.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[toolchain]
2+
channel = "stable"
3+
components = [ "rust-analyzer", "rust-src" ]

src/linked_array/mod.rs

Lines changed: 6 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -47,98 +47,15 @@ impl LinkedArray<u32> {
4747
vec![0]
4848
}
4949

50-
fn replace_pair(&mut self, idx: usize, token_id: u32) -> () {
51-
// Extract all the indices and values we need first
52-
// let (curr_elem, next_elem, next_next_idx) = {
53-
// let curr = self.vec.get(idx)?;
54-
// if let Some(curr) = curr {
55-
// let next_idx = curr.next?;
56-
// let next = self.vec.get(next_idx)?;
57-
// if let Some(next) = next {
58-
// let next_next_idx = next.next;
59-
// return (curr.elem, next.elem, next_next_idx)
60-
// };
61-
// }
62-
// };
63-
64-
// what do i actually need to write?
65-
66-
let (curr_elem, new_token_id,next_next_idx) = match self.vec.get(idx) {
67-
Some(Some(curr)) => {
68-
match curr.next.and_then(|x| self.vec.get(x)) {
69-
Some(Some(next)) => {
70-
// byte representation
71-
// string interning
72-
let curr_elem_bytes = self.interner.get_bytes(curr.elem);
73-
let next_elem_bytes = self.interner.get_bytes(next.elem);
74-
let merged_bytes = [curr_elem_bytes, next_elem_bytes].concat();
75-
let new_token_id = self.interner.intern(merged_bytes);
76-
77-
// update curr elem.
78-
//curr.elem = new_token_id;
79-
80-
let next_next_idx = next.next;
81-
match next.next.and_then(|x| self.vec.get(x)) {
82-
Some(Some(next_next)) => {
83-
// set curr's next to next-next.
84-
// curr.next = next_next_idx;
85-
// next_next.prev = Some(idx);
86-
(Some(curr.elem), Some(new_token_id),next_next_idx)
87-
},
88-
_ => (Some(curr.elem), Some(new_token_id),None)
89-
}
90-
},
91-
_ => (None,None,None)
92-
}
93-
},
94-
_ => (None,None,None)
95-
};
96-
97-
// if curr exists.
98-
if let Some(Some(curr_mut)) = self.vec.get_mut(idx) {
99-
100-
// curr.elem <- new_token_id
101-
curr_mut.elem = new_token_id.unwrap();
102-
103-
// if next_next exists
104-
// if let Some(Some(next_next_mut)) = self.vec.get_mut(next_next_idx.unwrap()) {
105-
// // curr.next <- next_next_idx
106-
// curr_mut.next = next_next_idx;
107-
// } else {
108-
// curr_mut.next = None;
109-
// }
110-
111-
112-
self.vec[next_next_idx.unwrap()].unwrap().prev = Some(idx);
113-
50+
fn replace_pair(&mut self, idx: usize, token_id: u32) -> Result<(), MergeError> {
51+
if idx >= self.vec.len() {
52+
return Err(MergeError::InvalidIndex)
11453
}
11554

116-
117-
118-
// Get the byte representations for merging
119-
// let curr_elem_bytes = self.interner.get_bytes(curr_elem);
120-
// let next_elem_bytes = self.interner.get_bytes(next_elem);
121-
// let merged_bytes = [curr_elem_bytes, next_elem_bytes].concat();
122-
// let new_token_id = self.interner.intern(merged_bytes);
123-
124-
// // mutations
125-
126-
// // Update current node with merged token
127-
// self.vec[idx].elem = new_token_id;
128-
// self.vec[idx].next = next_next_idx;
129-
130-
// // Update next-next node's prev pointer (if it exists)
131-
// if let Some(next_next_idx) = next_next_idx {
132-
// if next_next_idx < self.vec.len() {
133-
// self.vec[next_next_idx].prev = Some(idx);
134-
// }
135-
// }
136-
137-
// Mark the next node as deleted or handle it as needed
138-
// You might want to mark it as inactive rather than actually removing it
55+
let left_ref = self.vec[idx].as_ref();
13956

140-
();
141-
}
57+
Ok(())
58+
}
14259

14360
fn prev(&self, idx: usize,) -> Option<&LinkedArrayNode<u32>> {
14461
// let node = self.vec.get(idx)?;

0 commit comments

Comments
 (0)