Skip to main content

rusteal_core/
traits.rs

1use rusteal_ffi::{UClassHandle, UObjectHandle, UStructHandle};
2
3use crate::error::RustealResult;
4
5pub trait UeClass: 'static {
6    fn static_class() -> UClassHandle;
7}
8
9pub trait UeInterface: 'static {
10    fn static_class() -> UClassHandle;
11}
12
13pub trait UeStruct: 'static {
14    fn static_struct() -> UStructHandle;
15}
16
17pub trait UeEnum: Copy + 'static {
18    type Repr: Copy;
19
20    fn static_enum() -> UClassHandle;
21
22    fn to_i64(self) -> i64;
23
24    fn from_i64(value: i64) -> Option<Self>;
25}
26
27pub trait HasParent: UeClass {
28    type Parent: UeClass;
29}
30
31pub trait Inherits<U: UeClass>: UeClass {}
32
33pub trait UeHandle {
34    fn checked_handle(&self) -> RustealResult<UObjectHandle>;
35
36    fn raw_handle(&self) -> UObjectHandle;
37}
38
39pub trait ValidHandle {
40    fn handle(&self) -> UObjectHandle;
41}