Wellknown traits

Some Rust traits from the standard library have special support or effect in Zngur. They are listed on this page. You can use them by adding wellknown_traits(Trait1, Trait2); statement for your type in the main.zng file.

Copy

Adding this trait enables the copy constructor for the type on the C++ side, and removes the drop flag and destructor-related generated code, so it will improve performance.

?Sized

Marks the type as unsized and the pointers to them as fat. Unlike other wellknown traits, this is mandatory and missing it for a type will result in a compile error.

Debug

Enables using zngur_dbg macro for a type. zngur_dbg is a macro similar to dbg! in Rust which prints the location, name and value of expression inside it, like this:

[main.cpp:64] t = [
    10,
    20,
    60,
]

and returns it for further use.

PartialEq, PartialOrd, Add, Sub, Mul, Div, Rem, BitAnd, BitOr, BitXor, Shl, Shr

Unimplemented: This feature is not implemented yet. The progress in tracked in the issue https://github.com/HKalbasi/zngur/issues/2 . Feel free to express your interest so that it will be prioritized and consider contributing if you can.

These traits add operator overloading for binary operators ==, <=>, +, -, *, /, %, &, |, ^, << and >> respectively.

IntoIterator

Unimplemented: This feature is not implemented yet. The progress in tracked in the issue https://github.com/HKalbasi/zngur/issues/2 . Feel free to express your interest so that it will be prioritized and consider contributing if you can.

Enables converting the type into a C++ iterable object, so you can use it in for (auto x: iterator) and standard library functions that expect an iterator.