Files
Rust-High-Performance/Chapter04/example1.rs
2018-03-28 11:18:06 +05:30

95 lines
1.9 KiB
Rust

// Should warn missing crate documentation.
#![allow(dead_code)] // Just to avoid some warnings
#![warn(anonymous_parameters)]
#![warn(box_pointers)]
#![warn(missing_debug_implementations)]
#![warn(missing_copy_implementations)]
#![warn(missing_docs)]
#![warn(trivial_casts, trivial_numeric_casts)]
#![warn(unsafe_code)]
#![warn(unused_results)]
#![warn(unused_qualifications)]
#![warn(unused_import_braces)]
#![warn(variant_size_differences)]
// Would stop compilation.
// #[deny(warnings)]
#[derive(Default, Debug, Clone, Copy)]
struct MyStruct {
a: i32,
b: i32,
}
// Should warn anonymous parameters.
trait MyTrait {
fn check_this(String);
}
fn main() {
use Test::*;
// Should warn unused import braces.
use Test2::{C};
// Should warn box pointers.
let mut int = Box::new(5);
*int += 5;
println!("int: {}", int);
// Should warn trivial casts.
let test = MyStruct::default();
println!("{:?}", (test as MyStruct).a as i32);
// Should warn unsafe code
let test = vec![1, 2, 3];
println!("{}", unsafe { test.get_unchecked(2) });
// Should not warn.
let test = vec![1, 2, 3];
println!("{}", get_second(&test));
// Should not warn.
let _ = write_hello();
// Should warn unused qualifications.
println!("{:?}", Test::A);
println!("{:?}", B);
// Just to avoid another unused warning.
println!("{:?}, {:?}, {:?}", A, B, C);
}
// Should warn missing debug and copy implementations and missing documentation.
pub struct SomeStruct {
field1: u8,
}
#[allow(unsafe_code)]
fn get_second(slice: &[i32]) -> i32 {
*unsafe { slice.get_unchecked(1) }
}
fn write_hello() -> usize {
unimplemented!()
}
#[derive(Debug, Clone, Copy)]
enum Test {
A,
B,
}
#[derive(Debug, Clone, Copy)]
enum Test2 {
C,
D,
}
// Should warn variant size differences.
#[derive(Debug, Clone, Copy)]
enum Test3 {
A(u8),
B(u32),
}