mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
86 lines
1.2 KiB
Rust
86 lines
1.2 KiB
Rust
#[derive(Eq, PartialEq)]
|
|
pub struct Struct;
|
|
|
|
pub trait Trait {
|
|
fn f(&self);
|
|
}
|
|
|
|
impl Trait for Struct {
|
|
fn f(&self) {}
|
|
}
|
|
|
|
impl Struct {
|
|
fn g(&self) {}
|
|
}
|
|
|
|
trait TraitWithBlanketImpl {
|
|
fn h(&self);
|
|
}
|
|
|
|
impl<T: Eq> TraitWithBlanketImpl for T {
|
|
fn h(&self) {}
|
|
}
|
|
|
|
fn free() {}
|
|
|
|
fn usage() {
|
|
let s = Struct {};
|
|
s.f();
|
|
s.g();
|
|
s.h();
|
|
free();
|
|
}
|
|
|
|
enum MyEnum {
|
|
Variant1,
|
|
Variant2(usize),
|
|
Variant3 { x: usize },
|
|
}
|
|
|
|
fn enum_qualified_usage() {
|
|
_ = Option::None::<()>;
|
|
_ = Option::Some(0);
|
|
_ = MyEnum::Variant1;
|
|
_ = MyEnum::Variant2(0);
|
|
_ = MyEnum::Variant3 { x: 1 };
|
|
}
|
|
|
|
fn enum_unqualified_usage() {
|
|
_ = None::<()>;
|
|
_ = Some(0);
|
|
use MyEnum::*;
|
|
_ = Variant1;
|
|
_ = Variant2(0);
|
|
_ = Variant3 { x: 1 };
|
|
}
|
|
|
|
fn enum_match(e: MyEnum) {
|
|
match e {
|
|
MyEnum::Variant1 => {}
|
|
MyEnum::Variant2(_) => {}
|
|
MyEnum::Variant3 { .. } => {}
|
|
}
|
|
}
|
|
|
|
extern "C" {
|
|
pub fn is_alphanum(chr: u8) -> bool;
|
|
}
|
|
|
|
pub fn is_number_or_letter(chr: u8) -> bool {
|
|
unsafe { is_alphanum(chr) }
|
|
}
|
|
|
|
trait Abs {
|
|
fn abs(self) -> Self;
|
|
}
|
|
|
|
impl Abs for i32 {
|
|
fn abs(self) -> Self {
|
|
if self < 0 {
|
|
-self
|
|
} else {
|
|
self
|
|
}
|
|
}
|
|
}
|