#![no_std]
#![feature(alloc, allocator_api, lang_items, start, core_intrinsics, oom)]
#![allow(dead_code)]
use core::intrinsics;
use core::panic::PanicInfo;
#[macro_use]
extern crate derive_builder;
extern crate alloc;
#[derive(Builder)]
#[builder(no_std)]
struct IgnoreEmptyStruct {}
#[derive(Builder, PartialEq, Debug)]
#[builder(no_std)]
struct Foo {
#[builder(default)]
defaulted: u32,
#[builder(setter(skip), try_setter)]
skipped: u32,
}
fn main() {
let foo = FooBuilder::default()
.build()
.unwrap();
assert_eq!(foo, Foo {
defaulted: 0,
skipped: 0,
})
}
#[lang = "eh_personality"]
#[no_mangle]
pub extern fn eh_personality() {}
#[lang = "eh_unwind_resume"]
#[no_mangle]
pub extern fn rust_eh_unwind_resume() {
}
#[panic_handler]
#[no_mangle]
fn panic(_info: &PanicInfo) -> ! {
unsafe { intrinsics::abort() }
}
#[lang = "oom"]
#[no_mangle]
pub extern fn rust_oom(_: core::alloc::Layout) -> ! {
unsafe { intrinsics::abort() }
}
#[allow(non_snake_case)]
#[no_mangle]
pub extern "C" fn _Unwind_Resume() -> ! {
unsafe { intrinsics::abort() }
}
#[start]
fn start(_argc: isize, _argv: *const *const u8) -> isize {
main();
0
}