Compare commits
No commits in common. "master" and "demonstration-1" have entirely different histories.
master
...
demonstrat
108 changed files with 6657 additions and 560 deletions
50
.gitea/workflows/cargo.yaml
Normal file
50
.gitea/workflows/cargo.yaml
Normal file
|
@ -0,0 +1,50 @@
|
|||
name: cargo devel CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
# - '!master'
|
||||
|
||||
jobs:
|
||||
format:
|
||||
name: cargo CI
|
||||
permissions:
|
||||
# Give the default GITHUB_TOKEN write permission to commit and push the
|
||||
# added or changed files to the repository.
|
||||
contents: write
|
||||
steps:
|
||||
- name: get repo
|
||||
uses: actions/checkout@v4
|
||||
- name: install rust
|
||||
uses: https://github.com/dtolnay/rust-toolchain@stable
|
||||
- name: install additional rust things
|
||||
run: |
|
||||
rustup component add rustfmt
|
||||
rustup component add clippy
|
||||
- name: install additional dependencies
|
||||
run: |
|
||||
apt update -y
|
||||
apt install libgtk-3-dev librust-atk-dev -y
|
||||
- name: config custom registry
|
||||
run: |
|
||||
mkdir -p ~/.cargo/
|
||||
echo "" > ~/.cargo/config.toml
|
||||
echo "[registry]" >> ~/.cargo/config.toml
|
||||
echo 'cscherr = "cscherr"' >> ~/.cargo/config.toml
|
||||
echo '[registries.cscherr]' >> ~/.cargo/config.toml
|
||||
echo 'index = "https://git.cscherr.de/PlexSheep/_cargo-index.git"' >> ~/.cargo/config.toml
|
||||
cat ~/.cargo/config.toml
|
||||
- name: cargo clippy check
|
||||
run: cargo clippy --all-features --all-targets --workspace
|
||||
- name: cargo clippy fix
|
||||
run: cargo clippy --fix --all-features --all-targets --workspace
|
||||
- name: cargo fmt
|
||||
run: cargo fmt --all
|
||||
- name: cargo test
|
||||
run: cargo test --all-features --all-targets --workspace && cargo test --all-features --workspace --doc
|
||||
- name: commit back to repository
|
||||
uses: https://github.com/stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
# Optional. Commit message for the created commit.
|
||||
# Defaults to "Apply automatic changes"
|
||||
commit_message: automatic cargo CI changes
|
66
.github/workflows/cargo.yaml
vendored
66
.github/workflows/cargo.yaml
vendored
|
@ -1,51 +1,51 @@
|
|||
name: Rust CI
|
||||
name: cargo devel CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
# - '!master'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test Suite
|
||||
CI:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: Run tests
|
||||
run: ./cargo.sh test --all-features --workspace --all-targets
|
||||
|
||||
clippy:
|
||||
name: cargo CI
|
||||
permissions:
|
||||
# Give the default GITHUB_TOKEN write permission to commit and push the
|
||||
# added or changed files to the repository.
|
||||
contents: write
|
||||
name: Clippy
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
- name: get repo
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Rust toolchain
|
||||
- name: install rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
components: clippy,rustfmt
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: Clippy check and fix
|
||||
run: cargo clippy --fix --all-targets --all-features --workspace
|
||||
- name: Check formatting
|
||||
- name: install additional rust things
|
||||
run: |
|
||||
rustup component add rustfmt
|
||||
rustup component add clippy
|
||||
- name: install additional dependencies
|
||||
run: |
|
||||
apt update -y
|
||||
apt install libgtk-3-dev librust-atk-dev -y
|
||||
- name: config custom registry
|
||||
run: |
|
||||
mkdir -p ~/.cargo/
|
||||
echo "" > ~/.cargo/config.toml
|
||||
echo "[registry]" >> ~/.cargo/config.toml
|
||||
echo 'cscherr = "cscherr"' >> ~/.cargo/config.toml
|
||||
echo '[registries.cscherr]' >> ~/.cargo/config.toml
|
||||
echo 'index = "https://git.cscherr.de/PlexSheep/_cargo-index.git"' >> ~/.cargo/config.toml
|
||||
cat ~/.cargo/config.toml
|
||||
- name: cargo clippy check
|
||||
run: cargo clippy --all-features --all-targets --workspace
|
||||
- name: cargo clippy fix
|
||||
run: cargo clippy --fix --all-features --all-targets --workspace
|
||||
- name: cargo fmt
|
||||
run: cargo fmt --all
|
||||
- name: cargo test
|
||||
run: cargo test --all-features --all-targets --workspace && cargo test --all-features --workspace --doc
|
||||
- name: commit back to repository
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
# These defaults somehow do not work for me, so I've set them
|
||||
# explicitly
|
||||
# The big number is the userid of the bot
|
||||
commit_user_name: github-actions[bot]
|
||||
commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com
|
||||
commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> # defaults to "username <username@users.noreply.github.com>", where "username" belongs to the author of the commit that triggered the run
|
||||
commit_message: "ci: automatic Rust CI changes"
|
||||
# Optional. Commit message for the created commit.
|
||||
# Defaults to "Apply automatic changes"
|
||||
commit_message: automatic cargo CI changes
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,4 +1,3 @@
|
|||
Cargo.lock
|
||||
/target
|
||||
members/c-bindings/lib/CMakeCache.txt
|
||||
members/c-bindings/lib/cmake_install.cmake
|
||||
|
@ -7,5 +6,3 @@ members/c-bindings/lib/libtest.so.1
|
|||
members/c-bindings/lib/libtest.so.1.0.1
|
||||
members/sqlite-demo/data/cats.db
|
||||
members/diesel-demo/data/dieseldemo.db
|
||||
members/graph/src/output
|
||||
Cargo.lock
|
||||
|
|
6126
Cargo.lock
generated
Normal file
6126
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
105
Cargo.toml
105
Cargo.toml
|
@ -1,45 +1,80 @@
|
|||
[workspace]
|
||||
members = [
|
||||
".",
|
||||
"crates/criterion-demo",
|
||||
"crates/cucumber-demo",
|
||||
"crates/panic-calm",
|
||||
"crates/pest-demo",
|
||||
"crates/revsqrt",
|
||||
"crates/serde-json-demo",
|
||||
"crates/shortc",
|
||||
"crates/socker",
|
||||
"crates/tokryon",
|
||||
"crates/tokio-send-sync",
|
||||
"crates/matchmatchmatch",
|
||||
"crates/future_stream",
|
||||
"crates/mpsc",
|
||||
"crates/mpsc-full",
|
||||
"crates/echargs",
|
||||
"crates/claptest",
|
||||
"crates/rest",
|
||||
"crates/rest-queued",
|
||||
"crates/fluent-demo",
|
||||
"crates/onlytoken",
|
||||
"crates/sqlite-demo",
|
||||
"crates/diesel-demo",
|
||||
"crates/ptlog",
|
||||
"crates/hello-world",
|
||||
"crates/statusline",
|
||||
"crates/clap-repl-demo",
|
||||
"crates/arithmetics",
|
||||
"crates/egui-demo",
|
||||
"crates/rfd-demo",
|
||||
"crates/iter-prod",
|
||||
"crates/tpdemo",
|
||||
"crates/graph",
|
||||
"crates/sdl-idiot",
|
||||
".",
|
||||
"members/criterion-demo",
|
||||
"members/cucumber-demo",
|
||||
"members/panic-calm",
|
||||
"members/pest-demo",
|
||||
"members/revsqrt",
|
||||
"members/serde-json-demo",
|
||||
"members/shortc",
|
||||
"members/socker",
|
||||
"members/tokryon",
|
||||
"members/tokio-send-sync",
|
||||
"members/matchmatchmatch",
|
||||
"members/future_stream",
|
||||
"members/mpsc",
|
||||
"members/mpsc-full",
|
||||
"members/echargs",
|
||||
"members/claptest",
|
||||
"members/rest",
|
||||
"members/rest-queued",
|
||||
"members/fluent-demo",
|
||||
"members/onlytoken",
|
||||
"members/sqlite-demo",
|
||||
"members/diesel-demo",
|
||||
"members/ptlog",
|
||||
"members/hello-world",
|
||||
"members/statusline",
|
||||
"members/clap-repl-demo",
|
||||
"members/arithmetics",
|
||||
"members/egui-demo",
|
||||
"members/rfd-demo",
|
||||
]
|
||||
default-members = [
|
||||
".",
|
||||
"members/rfd-demo",
|
||||
"members/egui-demo",
|
||||
"members/arithmetics",
|
||||
"members/statusline",
|
||||
"members/ptlog",
|
||||
"members/diesel-demo",
|
||||
"members/onlytoken",
|
||||
"members/fluent-demo",
|
||||
"members/echargs",
|
||||
"members/revsqrt",
|
||||
"members/claptest",
|
||||
"members/mpsc",
|
||||
"members/mpsc-full",
|
||||
"members/criterion-demo",
|
||||
"members/shortc",
|
||||
"members/pest-demo",
|
||||
"members/serde-json-demo",
|
||||
"members/cucumber-demo",
|
||||
"members/panic-calm",
|
||||
"members/socker",
|
||||
"members/tokryon",
|
||||
"members/tokio-send-sync",
|
||||
"members/matchmatchmatch",
|
||||
"members/future_stream",
|
||||
"members/rest",
|
||||
"members/rest-queued",
|
||||
"members/sqlite-demo",
|
||||
]
|
||||
default-members = ["."]
|
||||
|
||||
[workspace.dependencies]
|
||||
anyhow = "1.0.79"
|
||||
thiserror = "1.0.56"
|
||||
tokio = { version = "1.35.1", features = [
|
||||
"net",
|
||||
"rt",
|
||||
"macros",
|
||||
"rt-multi-thread",
|
||||
"io-util",
|
||||
"time",
|
||||
"sync",
|
||||
] }
|
||||
futures = { version = "0.3.30", features = ["executor"] }
|
||||
serde = { version = "1.0.171", features = ["derive"] }
|
||||
serde_json = "1.0.102"
|
||||
libpt = { version = "0.5.1", features = ["full"] }
|
||||
|
|
18
README.md
18
README.md
|
@ -7,14 +7,6 @@ dependencies.
|
|||
|
||||
Completeness is not a goal of this project.
|
||||
|
||||
## Compiling
|
||||
|
||||
Please prefer the use of the [cargo.sh](./cargo.sh) script.
|
||||
|
||||
```bash
|
||||
$ ./cargo.sh CRATE CARGO_COMMANDS...
|
||||
```
|
||||
|
||||
## Highlighted demo crates
|
||||
|
||||
**Basics**
|
||||
|
@ -48,17 +40,9 @@ $ ./cargo.sh CRATE CARGO_COMMANDS...
|
|||
|
||||
## Warnings
|
||||
|
||||
* Some of the crates, especially those related to GUIs, may not work in WSL
|
||||
* Some of the crates, especially those related to GUIs, may not work in WSL
|
||||
environments.
|
||||
|
||||
## Additional dependencies
|
||||
|
||||
If you need to compile the whole workspace:
|
||||
|
||||
```bash
|
||||
apt install libgtk-3-dev librust-atk-dev -y
|
||||
```
|
||||
|
||||
## Rust unsafe
|
||||
|
||||
Unsafe rust offers many possibilities otherwise locked from rust, which might
|
||||
|
|
6
cargo.sh
6
cargo.sh
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
ROOT=$PWD
|
||||
CARGO_TARGET_DIR=$PWD/target
|
||||
|
||||
cargo --config "target-dir=\"$ROOT/target\"" $@
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
CRATE="$1"
|
||||
ROOT=$PWD
|
||||
CARGO_TARGET_DIR=$PWD/target
|
||||
|
||||
echo "using crate $CRATE"
|
||||
cargo --config "target-dir=\"$ROOT/target\"" ${@:2} --manifest-path $ROOT/crates/${CRATE}/Cargo.toml
|
|
@ -1,11 +0,0 @@
|
|||
[package]
|
||||
name = "graph"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
chrono = "0.4.39"
|
||||
plotters = "0.3.7"
|
||||
rand = "0.8.5"
|
||||
rand_distr = "0.4.3"
|
||||
rand_xorshift = "0.3.0"
|
|
@ -1,296 +0,0 @@
|
|||
use std::{collections::HashMap, io::ErrorKind};
|
||||
|
||||
use chrono::{DateTime, Timelike, Utc};
|
||||
use plotters::prelude::*;
|
||||
|
||||
fn main() {
|
||||
if let Err(e) = std::fs::create_dir("output") {
|
||||
if e.kind() != ErrorKind::AlreadyExists {
|
||||
eprintln!("could not create the output directory: {e}");
|
||||
std::process::exit(1)
|
||||
}
|
||||
}
|
||||
println!("generating coordinate system");
|
||||
coordinate_system();
|
||||
println!("generating histogram");
|
||||
histo().expect("histogram failed");
|
||||
println!("generating area chart");
|
||||
area().expect("area failed");
|
||||
println!("generating timed area chart");
|
||||
time_area().expect("time area failed");
|
||||
|
||||
println!("all done!")
|
||||
}
|
||||
|
||||
fn coordinate_system() {
|
||||
let root_area = BitMapBackend::new("output/coords.png", (600, 400)).into_drawing_area();
|
||||
root_area.fill(&WHITE).unwrap();
|
||||
|
||||
let mut ctx = ChartBuilder::on(&root_area)
|
||||
.set_label_area_size(LabelAreaPosition::Left, 40)
|
||||
.set_label_area_size(LabelAreaPosition::Bottom, 40)
|
||||
.caption("Line Plot Demo", ("sans-serif", 40))
|
||||
.build_cartesian_2d(-10..10, 0..100)
|
||||
.unwrap();
|
||||
|
||||
ctx.configure_mesh().draw().unwrap();
|
||||
|
||||
ctx.draw_series(LineSeries::new((-10..=10).map(|x| (x, x * x)), &GREEN))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn histo() -> Result<(), Box<dyn std::error::Error>> {
|
||||
const OUT_FILE_NAME: &str = "output/histogram.png";
|
||||
let root = BitMapBackend::new(OUT_FILE_NAME, (640, 480)).into_drawing_area();
|
||||
|
||||
root.fill(&WHITE)?;
|
||||
|
||||
let mut chart = ChartBuilder::on(&root)
|
||||
.x_label_area_size(35)
|
||||
.y_label_area_size(40)
|
||||
.margin(5)
|
||||
.caption("Histogram Test", ("sans-serif", 50.0))
|
||||
.build_cartesian_2d((0u32..10u32).into_segmented(), 0u32..10u32)?;
|
||||
|
||||
chart
|
||||
.configure_mesh()
|
||||
.disable_x_mesh()
|
||||
.bold_line_style(WHITE.mix(0.3))
|
||||
.y_desc("Count")
|
||||
.x_desc("Bucket")
|
||||
.axis_desc_style(("sans-serif", 15))
|
||||
.draw()?;
|
||||
|
||||
let data = [
|
||||
0u32, 1, 1, 1, 4, 2, 5, 7, 8, 6, 4, 2, 1, 8, 3, 3, 3, 4, 4, 3, 3, 3,
|
||||
];
|
||||
|
||||
chart.draw_series(
|
||||
Histogram::vertical(&chart)
|
||||
.style(RED.mix(0.5).filled())
|
||||
.data(data.iter().map(|x: &u32| (*x, 1))),
|
||||
)?;
|
||||
|
||||
// To avoid the IO failure being ignored silently, we manually call the present function
|
||||
root.present().expect("Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn area() -> Result<(), Box<dyn std::error::Error>> {
|
||||
const OUT_FILE_NAME: &str = "output/area.png";
|
||||
use rand::SeedableRng;
|
||||
use rand_distr::{Distribution, Normal};
|
||||
use rand_xorshift::XorShiftRng;
|
||||
|
||||
let data: Vec<_> = {
|
||||
let norm_dist = Normal::new(500.0, 100.0).unwrap();
|
||||
let mut x_rand = XorShiftRng::from_seed(*b"MyFragileSeed345");
|
||||
let x_iter = norm_dist.sample_iter(&mut x_rand);
|
||||
x_iter
|
||||
.filter(|x| *x < 1500.0)
|
||||
.take(100)
|
||||
.zip(0..)
|
||||
.map(|(x, b)| x + (b as f64).powf(1.2))
|
||||
.collect()
|
||||
};
|
||||
|
||||
let root = BitMapBackend::new(OUT_FILE_NAME, (1024, 768)).into_drawing_area();
|
||||
|
||||
root.fill(&WHITE)?;
|
||||
|
||||
let mut chart = ChartBuilder::on(&root)
|
||||
.set_label_area_size(LabelAreaPosition::Left, 60)
|
||||
.set_label_area_size(LabelAreaPosition::Bottom, 60)
|
||||
.caption("Area Chart Demo", ("sans-serif", 40))
|
||||
.build_cartesian_2d(0..(data.len() - 1), 0.0..1500.0)?;
|
||||
|
||||
chart
|
||||
.configure_mesh()
|
||||
.disable_x_mesh()
|
||||
.disable_y_mesh()
|
||||
.draw()?;
|
||||
|
||||
chart.draw_series(
|
||||
AreaSeries::new(
|
||||
(0..).zip(data.iter()).map(|(x, y)| (x, *y)),
|
||||
0.0,
|
||||
RED.mix(0.2),
|
||||
)
|
||||
.border_style(RED),
|
||||
)?;
|
||||
|
||||
// To avoid the IO failure being ignored silently, we manually call the present function
|
||||
root.present().expect("Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn time_area() -> Result<(), Box<dyn std::error::Error>> {
|
||||
use plotters::prelude::*;
|
||||
|
||||
use chrono::{TimeZone, Utc};
|
||||
|
||||
const OUT_FILE_NAME: &str = "output/timed_data.png";
|
||||
let root = BitMapBackend::new(OUT_FILE_NAME, (1024, 768)).into_drawing_area();
|
||||
|
||||
root.fill(&WHITE)?;
|
||||
|
||||
let mut chart = ChartBuilder::on(&root)
|
||||
.margin(10)
|
||||
.caption(
|
||||
"Monthly Average Temperate in Salt Lake City, UT",
|
||||
("sans-serif", 40),
|
||||
)
|
||||
.set_label_area_size(LabelAreaPosition::Left, 60)
|
||||
.set_label_area_size(LabelAreaPosition::Right, 60)
|
||||
.set_label_area_size(LabelAreaPosition::Bottom, 40)
|
||||
.build_cartesian_2d(
|
||||
(Utc.ymd(2010, 1, 1)..Utc.ymd(2018, 12, 1)).monthly(),
|
||||
14.0..104.0,
|
||||
)?
|
||||
.set_secondary_coord(
|
||||
(Utc.ymd(2010, 1, 1)..Utc.ymd(2018, 12, 1)).monthly(),
|
||||
-10.0..40.0,
|
||||
);
|
||||
|
||||
chart
|
||||
.configure_mesh()
|
||||
.disable_x_mesh()
|
||||
.disable_y_mesh()
|
||||
.x_labels(30)
|
||||
.max_light_lines(4)
|
||||
.y_desc("Average Temp (F)")
|
||||
.draw()?;
|
||||
chart
|
||||
.configure_secondary_axes()
|
||||
.y_desc("Average Temp (C)")
|
||||
.draw()?;
|
||||
|
||||
chart.draw_series(LineSeries::new(
|
||||
TIME_DATA.iter().map(|(y, m, t)| (Utc.ymd(*y, *m, 1), *t)),
|
||||
&BLUE,
|
||||
))?;
|
||||
|
||||
chart.draw_series(
|
||||
TIME_DATA
|
||||
.iter()
|
||||
.map(|(y, m, t)| Circle::new((Utc.ymd(*y, *m, 1), *t), 3, BLUE.filled())),
|
||||
)?;
|
||||
|
||||
// To avoid the IO failure being ignored silently, we manually call the present function
|
||||
root.present().expect("Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir");
|
||||
println!("Result has been saved to {}", OUT_FILE_NAME);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
const TIME_DATA: [(i32, u32, f64); 12 * 9] = [
|
||||
(2010, 1, 32.4),
|
||||
(2010, 2, 37.5),
|
||||
(2010, 3, 44.5),
|
||||
(2010, 4, 50.3),
|
||||
(2010, 5, 55.0),
|
||||
(2010, 6, 70.0),
|
||||
(2010, 7, 78.7),
|
||||
(2010, 8, 76.5),
|
||||
(2010, 9, 68.9),
|
||||
(2010, 10, 56.3),
|
||||
(2010, 11, 40.3),
|
||||
(2010, 12, 36.5),
|
||||
(2011, 1, 28.8),
|
||||
(2011, 2, 35.1),
|
||||
(2011, 3, 45.5),
|
||||
(2011, 4, 48.9),
|
||||
(2011, 5, 55.1),
|
||||
(2011, 6, 68.8),
|
||||
(2011, 7, 77.9),
|
||||
(2011, 8, 78.4),
|
||||
(2011, 9, 68.2),
|
||||
(2011, 10, 55.0),
|
||||
(2011, 11, 41.5),
|
||||
(2011, 12, 31.0),
|
||||
(2012, 1, 35.6),
|
||||
(2012, 2, 38.1),
|
||||
(2012, 3, 49.1),
|
||||
(2012, 4, 56.1),
|
||||
(2012, 5, 63.4),
|
||||
(2012, 6, 73.0),
|
||||
(2012, 7, 79.0),
|
||||
(2012, 8, 79.0),
|
||||
(2012, 9, 68.8),
|
||||
(2012, 10, 54.9),
|
||||
(2012, 11, 45.2),
|
||||
(2012, 12, 34.9),
|
||||
(2013, 1, 19.7),
|
||||
(2013, 2, 31.1),
|
||||
(2013, 3, 46.2),
|
||||
(2013, 4, 49.8),
|
||||
(2013, 5, 61.3),
|
||||
(2013, 6, 73.3),
|
||||
(2013, 7, 80.3),
|
||||
(2013, 8, 77.2),
|
||||
(2013, 9, 68.3),
|
||||
(2013, 10, 52.0),
|
||||
(2013, 11, 43.2),
|
||||
(2013, 12, 25.7),
|
||||
(2014, 1, 31.5),
|
||||
(2014, 2, 39.3),
|
||||
(2014, 3, 46.4),
|
||||
(2014, 4, 52.5),
|
||||
(2014, 5, 63.0),
|
||||
(2014, 6, 71.3),
|
||||
(2014, 7, 81.0),
|
||||
(2014, 8, 75.3),
|
||||
(2014, 9, 70.0),
|
||||
(2014, 10, 58.6),
|
||||
(2014, 11, 42.1),
|
||||
(2014, 12, 38.0),
|
||||
(2015, 1, 35.3),
|
||||
(2015, 2, 45.2),
|
||||
(2015, 3, 50.9),
|
||||
(2015, 4, 54.3),
|
||||
(2015, 5, 60.5),
|
||||
(2015, 6, 77.1),
|
||||
(2015, 7, 76.2),
|
||||
(2015, 8, 77.3),
|
||||
(2015, 9, 70.4),
|
||||
(2015, 10, 60.6),
|
||||
(2015, 11, 40.9),
|
||||
(2015, 12, 32.4),
|
||||
(2016, 1, 31.5),
|
||||
(2016, 2, 35.1),
|
||||
(2016, 3, 49.1),
|
||||
(2016, 4, 55.1),
|
||||
(2016, 5, 60.9),
|
||||
(2016, 6, 76.9),
|
||||
(2016, 7, 80.0),
|
||||
(2016, 8, 77.0),
|
||||
(2016, 9, 67.1),
|
||||
(2016, 10, 59.1),
|
||||
(2016, 11, 47.4),
|
||||
(2016, 12, 31.8),
|
||||
(2017, 1, 29.4),
|
||||
(2017, 2, 42.4),
|
||||
(2017, 3, 51.7),
|
||||
(2017, 4, 51.7),
|
||||
(2017, 5, 62.5),
|
||||
(2017, 6, 74.8),
|
||||
(2017, 7, 81.3),
|
||||
(2017, 8, 78.1),
|
||||
(2017, 9, 65.7),
|
||||
(2017, 10, 52.5),
|
||||
(2017, 11, 49.0),
|
||||
(2017, 12, 34.4),
|
||||
(2018, 1, 38.1),
|
||||
(2018, 2, 37.5),
|
||||
(2018, 3, 45.4),
|
||||
(2018, 4, 54.6),
|
||||
(2018, 5, 64.0),
|
||||
(2018, 6, 74.9),
|
||||
(2018, 7, 82.5),
|
||||
(2018, 8, 78.1),
|
||||
(2018, 9, 71.9),
|
||||
(2018, 10, 53.2),
|
||||
(2018, 11, 39.7),
|
||||
(2018, 12, 33.6),
|
||||
];
|
|
@ -1,6 +0,0 @@
|
|||
[package]
|
||||
name = "iter-prod"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
|
@ -1,58 +0,0 @@
|
|||
//! How to calc the factorial n! with just a single line, no imperative style loops, no vars.
|
||||
//!
|
||||
//! See [factorial] for how it's done and [myprod] for how it works under the hood.
|
||||
|
||||
/// Just so there is something to be ran :)
|
||||
pub fn main() {
|
||||
let x = 7;
|
||||
println!("{}", factorial(x));
|
||||
}
|
||||
|
||||
/// Return the factorial of `n` which is defined as `1 * 2 * 3 * … * n`.
|
||||
/// <https://en.wikipedia.org/wiki/Factorial>
|
||||
///
|
||||
/// Task from rustlings
|
||||
///
|
||||
/// Do not use:
|
||||
/// - early returns (using the `return` keyword explicitly)
|
||||
///
|
||||
/// Try not to use:
|
||||
/// - imperative style loops (for/while)
|
||||
/// - additional variables
|
||||
///
|
||||
/// For an extra challenge, don't use:
|
||||
/// - recursion
|
||||
pub fn factorial(n: u128) -> u128 {
|
||||
(1..n + 1).product()
|
||||
}
|
||||
|
||||
/// Does the same as [std::iter::Iterator::product] from the stdlib.
|
||||
///
|
||||
/// The code for [Iterator::product] can be hard to find because it is implemented with a trait and
|
||||
/// then a macro. Here is a simple version of it.
|
||||
#[allow(dead_code)]
|
||||
pub fn myprod<T>(iter: T) -> u128
|
||||
where
|
||||
T: Iterator<Item = u128>,
|
||||
{
|
||||
#[allow(clippy::unnecessary_fold)] // clippy detects that this is just Iter::product
|
||||
iter.fold(1, |acc, v| acc * v)
|
||||
}
|
||||
|
||||
/// That's just my unit tests to confirm it works
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use super::*;
|
||||
#[test]
|
||||
pub fn works() {
|
||||
assert_eq!(factorial(7), 5040);
|
||||
assert_eq!(factorial(9), 362880);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn myprod_same_as_real() {
|
||||
assert_eq!((1..5).product::<u128>(), myprod(1..5));
|
||||
assert_eq!((1..30).product::<u128>(), myprod(1..30));
|
||||
// assert_eq!((1..50).product::<u128>(), myprod(1..50)); // u128 overflows here
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
[package]
|
||||
name = "sdl-idiot"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
|
@ -1,3 +0,0 @@
|
|||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
[package]
|
||||
name = "tpdemo"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
threadpool = "1.8.1"
|
|
@ -1,25 +0,0 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use threadpool::ThreadPool;
|
||||
|
||||
struct Fish(i32);
|
||||
|
||||
fn main() {
|
||||
let thing: Arc<Mutex<Fish>> = Arc::new(Mutex::new(Fish(0)));
|
||||
|
||||
let tp = ThreadPool::new(20);
|
||||
|
||||
while thing.lock().unwrap().0 < 200 {
|
||||
let thing = thing.clone();
|
||||
tp.execute(move || {
|
||||
do_thing(thing);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fn do_thing(thing: Arc<Mutex<Fish>>) {
|
||||
println!("blubb");
|
||||
#[allow(deprecated)]
|
||||
std::thread::sleep_ms(1000);
|
||||
thing.lock().unwrap().0 += 1;
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/bash
|
||||
root=$PWD
|
||||
DIRS=$(ls ./crates)
|
||||
|
||||
echo $DIRS
|
||||
|
||||
for dir in $DIRS; do
|
||||
cd crates/$dir;
|
||||
eval "$@";
|
||||
cd $root;
|
||||
done;
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/bash
|
||||
ROOT=$PWD
|
||||
DIRS=$(ls ./crates)
|
||||
|
||||
echo $DIRS
|
||||
|
||||
for dir in $DIRS; do
|
||||
cd crates/$dir;
|
||||
eval "bash $ROOT/cargo.sh $@";
|
||||
cd $ROOT;
|
||||
done;
|
|
@ -6,13 +6,5 @@ edition = "2021"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
tokio = { version = "1.35.1", features = [
|
||||
"net",
|
||||
"rt",
|
||||
"macros",
|
||||
"rt-multi-thread",
|
||||
"io-util",
|
||||
"time",
|
||||
"sync",
|
||||
] }
|
||||
futures = { version = "0.3.30", features = ["executor"] }
|
||||
tokio.workspace = true
|
||||
futures.workspace = true
|
|
@ -11,5 +11,5 @@ libpt.workspace = true
|
|||
rand = { version = "0.8.5", features = ["serde"] }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
tokio = { version = "1.35.1", features = ["full"] }
|
||||
tokio.workspace = true
|
||||
warp = "0.3.6"
|
|
@ -9,5 +9,5 @@ edition = "2021"
|
|||
libpt.workspace = true
|
||||
serde = { workspace = true, features = ["serde_derive"] }
|
||||
serde_json.workspace = true
|
||||
tokio = { version = "1.35.1", features = ["full"] }
|
||||
tokio = { workspace = true, features = ["full"] }
|
||||
warp = "0.3.6"
|
|
@ -12,7 +12,5 @@ async fn main() {
|
|||
debug!("spawning data_processing task: {store:#?}");
|
||||
tokio::spawn(data_processing(store.clone()));
|
||||
info!("starting webserver");
|
||||
warp::serve(get_store(store))
|
||||
.run(([127, 0, 0, 1], 3030))
|
||||
.await;
|
||||
warp::serve(routes(store)).run(([127, 0, 0, 1], 3030)).await;
|
||||
}
|
|
@ -18,6 +18,7 @@ pub fn get_store(store: Store) -> impl Filter<Extract = impl Reply, Error = Reje
|
|||
warp::path!("api" / "v1" / "store")
|
||||
.and(warp::get())
|
||||
.and(with_store(store))
|
||||
// .and(warp::body::content_length_limit(2 << 13))
|
||||
.then(|store: Store| async move {
|
||||
info!("GET /api/v1/store");
|
||||
warp::reply::json(&store.get().await)
|
369
members/serde-json-demo/Cargo.lock
generated
Normal file
369
members/serde-json-demo/Cargo.lock
generated
Normal file
|
@ -0,0 +1,369 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "android-tzdata"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||
|
||||
[[package]]
|
||||
name = "android_system_properties"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
|
||||
dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"serde",
|
||||
"time",
|
||||
"wasm-bindgen",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.57"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"windows",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone-haiku"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.64"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.147"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.64"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.171"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde-json-demo"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.171"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.102"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"wasi",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"log",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue