Skip to content

Commit b20d99c

Browse files
author
okamoto
committed
part2の学習
1 parent 93f979d commit b20d99c

File tree

15 files changed

+185
-0
lines changed

15 files changed

+185
-0
lines changed

part2/app/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "app"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
9+
library = {path = "../library", default-features = false, features = ["serde", "special"]}

part2/app/src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
fn main() {
2+
library::serde();
3+
library::special();
4+
}

part2/bench/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "bench"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]

part2/bench/src/lib.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#![feature(test)]
2+
3+
pub fn hash(x: u64) -> u64 {
4+
let mut y = x;
5+
for _ in 0..512 {
6+
y = y << 5;
7+
y = y ^ x;
8+
}
9+
y
10+
}
11+
12+
#[cfg(test)]
13+
mod tests {
14+
extern crate test;
15+
16+
use super::*;
17+
use test::Bencher;
18+
19+
#[bench]
20+
fn bench_hash(b: &mut Bencher) {
21+
b.iter(|| {
22+
let n = test::black_box(2);
23+
hash(n)
24+
});
25+
}
26+
}

part2/clippy/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[package]
2+
name = "clippy"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]

part2/clippy/src/main.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
fn main() {
2+
let mut a = 0;
3+
let mut b = 1;
4+
5+
#[allow(clippy::almost_swapped)]
6+
{
7+
a = b;
8+
b = a;
9+
}
10+
11+
dbg!(a);
12+
dbg!(b);
13+
}

part2/library/Cargo.toml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[package]
2+
name = "library"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
[features]
7+
# デフォルトで有効になるフィーチャ
8+
default = ["parallel", "serde"]
9+
10+
# 依存関係を持たないフィーチャ
11+
special = []
12+
13+
# 依存クレートを持つフィーチャ
14+
parallel = ["crossbeam"]
15+
16+
# 依存クレートのフィーチャを有効にするフィーチャ
17+
nightly = ["crossbeam/nightly"]
18+
19+
# いろいろな依存関係を混ぜた例
20+
full = ["crossbeam/nightly", "parallel", "serde"]
21+
22+
[dependencies]
23+
crossbeam = {version = "0.7.3", optional = true}
24+
serde = {version = "1.0.111", optional = true}

part2/library/src/lib.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#[cfg(feature = "parallel")]
2+
pub fn parallel() {
3+
println!("parallel is enabled");
4+
}
5+
6+
#[cfg(feature = "serde")]
7+
pub fn serde() {
8+
println!("serde is enabled");
9+
}
10+
11+
#[cfg(feature = "special")]
12+
pub fn special() {
13+
println!("special is enabled");
14+
}
15+
16+
#[cfg(test)]
17+
mod tests {
18+
use super::*;
19+
20+
#[cfg(feature = "parallel")]
21+
#[test]
22+
fn test_parallel() {
23+
parallel();
24+
}
25+
26+
#[cfg(feature = "serde")]
27+
#[test]
28+
fn test_serde() {
29+
serde();
30+
}
31+
32+
#[cfg(feature = "special")]
33+
#[test]
34+
fn test_special() {
35+
special();
36+
}
37+
}

part2/sample/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[workspace]
2+
3+
members = [
4+
"main",
5+
"sub",
6+
]

part2/sample/main/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "main"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
9+
sub = {path = "../sub", versionk = "0.1.0"}

0 commit comments

Comments
 (0)