From 333965318a5d000140d54be2a2a9e0832372f271 Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Thu, 21 Mar 2019 17:10:15 -0400 Subject: Added advanced features. --- advanced/unsafe-rust/src/main.rs | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 advanced/unsafe-rust/src/main.rs (limited to 'advanced/unsafe-rust/src') diff --git a/advanced/unsafe-rust/src/main.rs b/advanced/unsafe-rust/src/main.rs new file mode 100644 index 0000000..c9967a8 --- /dev/null +++ b/advanced/unsafe-rust/src/main.rs @@ -0,0 +1,62 @@ +fn main() { + let mut num = 5; + + let r1 = &num as *const i32; + let r2 = &mut num as *mut i32; + + let address = 0x012345usize; + let r = address as *const i32; + + unsafe { + println!("{}", *r1); + println!("{}", *r2); + } + + unsafe { + dangerous(); + } + + + unsafe { + println!("c call: {}", abs(-3)); + } + + + unsafe { + HELLO_WORLD = "test"; + println!("{}", HELLO_WORLD); + } + println!("{}", HI_THERE); + + add_to_count(3); + + unsafe { + println!("counter: {}", COUNTER); + } +} + +unsafe fn dangerous() {} + +extern "C" { + fn abs(input: i32) -> i32; +} + +static mut HELLO_WORLD: &str = "hello world"; +static mut COUNTER: u32 = 0; + +fn add_to_count(inc: u32) { + unsafe { + COUNTER += inc; + } +} + +const HI_THERE: &str = "hi there"; + +unsafe trait Foo { + // methods +} + +unsafe impl Foo for i32 { + // implementations +} + -- cgit v1.2.3