2025-09-18 Rui Duan <ruiduan@member.fsf.org>
v0.6.0
* src/heap.rs, src/heap/sort.rs, examples/heap_sort.rs:
Add Heap Sort and a client of it.
* src/heap/maxpq.rs, examples/maxpq.rs:
Add MaxPQ and a client of it.
* src/heap/minpq.rs, examples/minpq.rs:
Add MinPQ and a client of it.
* src/io.rs: Add method read_all_strings.
* src/vec.rs, src/vec/raw_vec.rs: Add methods with_capacity.
2025-09-11 Rui Duan <ruiduan@member.fsf.org>
v0.5.2
* src/bst.rs, src/graph/path.rs, src/io.rs:
* src/queue/linkedqueue.rs, src/queue/svecque.rs, src/vec.rs:
* src/vec/raw_vec.rs:
Apply Clippy suggestions.
* src/bst.rs: Allow clippy::borrowed_box.
* src/graph/path.rs: Add doc for BreadthFirstPaths.
2025-09-10 Rui Duan <ruiduan@member.fsf.org>
v0.5.1
* src/queue/resizingqueue.rs: Fix a link in doc.
2025-09-10 Rui Duan <ruiduan@member.fsf.org>
v0.5.0
Add links in documentation. Move mod doc to struct doc.
Standardize the style of doc.
* src/lib.rs: Re-export the data types to the first level, hiding
internal mods.
* src/graph.rs:
* src/path.rs:
* examples/depth_first_paths.rs:
* examples/breadth_first_paths.rs:
* examples/graph.rs:
Add undirected Graph, DepthFirstPaths, BreadthFirstPaths.
* src/queue.rs, src/queue/linkedqueue.rs:
* src/queue/resizingqueue.rs, src/queue/svecque.rs:
* examples/queue.rs:
Add three implementations of Queue. In the documentation, discuss
the implementation considerations, regarding linked list and
vector.
* src/bag/linkedbag.rs,
* src/stack/linkedstack.rs:
* src/stack/resizingstack.rs:
Implement Clone for LinkedBag, LinkedStack, ResizingStack.
* src/io.rs: Document errors of the APIs.
* examples/linkedqueue_mut_pointer.rs: Add non-covariant
implementation of LinkedQueue using mutable pointers.
* examples/subtyping_variance.rs: Add template for testing
subtyping and covariance.
* examples/test_vec_mem_leak.rs: Add comment for non-released
memory in `std::io::stdin`.
2025-09-08 Rui Duan <ruiduan@member.fsf.org>
v0.4.0
* src/vec.rs:
- Rename `Vec` to `SVec`. (BREAKING CHANGE)
- Add ergonomic features: Clone, Debug, FromIterator (used by
`iterator::collect()), Default, and macro `svec`.
* src/scanner.rs: BREAKING CHANGES.
- Delete old methods `next_i32`, `next_i64`, next_f64`.
- Add new methods with generic methods: `next_int<T>`,
`next_float<T>`.
* src/io.rs: BREAKING CHANGES.
- Rename file input `In` to `FileIn`.
- Create new `In` as a versatile base, and let `StdIn` and `FileIn`
"inherit" from `In`. The inheritance is simulated by `Deref` and
`DerefMut`.
- `read_all_i32` is changed to generic method `read_all_ints<T>`.
Sematic change: the old file input `read_all_i32` opens a new file
handle to read the whole file, while the new `read_all_ints` uses
the internal `Scanner` to continue from the current cursor to read
to the end of the file.
* src/primitive.rs: Add traits `PrimInt` and `PrimFloat`. They
are used for trait bounds for integers and floating point types.
2025-09-05 Rui Duan <ruiduan@member.fsf.org>
v0.3.0
* src/vec.rs: Add complete vector implementation
`algs4_rs::vec::Vec`.
* src/stack.rs: Add Linked-list Stack `src/stack/linkedstack.rs`
and `algs4_rs::vec::Vec`-based stack `src/stack/resizingstack.rs`.
* src/bag/resizingbag.rs: Change `src/bag/vecbag.rs` to
`src/bag/resizingbag.rs` and replace the backend `std::vec::Vec`
with our `algs4_rs::vec::Vec`.
* examples/test_vec_mem_leak.rs: Add a template for testing memory
leak.
2025-09-02 Rui Duan <ruiduan@member.fsf.org>
v0.2.0
* src/bag.rs: Add Linked-list Bag `src/bag/linkedbag.rs` and
`std::vec::Vec`-based bag `src/bag/vecbag.rs`.
* src/io.rs: Add method `StdIn::read_string`.
2025-08-28 Rui Duan <ruiduan@member.fsf.org>
v0.1.0
* src/bst.rs, examples/bst.rs: Add binary search tree and example
client.
* src/binary_search.rs, examples/binary_search.rs: Add binary
search algorithm for integers, add example client.
* src/linear_regression.rs: Add `LinearRegression` utility.
* src/twosun.rs, src/twosum_fast.rs: Add Two-Sum algorithm.
* src/threesum.rs, src/threesum_fast.rs: Add Three-Sum algorithm.
* src/scanner.rs: Add `Scanner` utility for streaming input.
* src/io.rs: Add `StdIn` and `In` (for file input) utilities.
* src/error.rs: Add `Algs4Error` type.
* examples/doubling_ratio.rs: Add example program for Doubling
Ratio method.
* examples/doubling_test.rs: Add example program for Doubling Test
method.