@value
struct Foo(AnyType):
    var p: Pointer[Int]
    var size: Int

    fn __init__(inout self, size: Int):
        self.p = Pointer[Int].alloc(size)
        self.size = size

    fn __del__(owned self):
        print("--freeing allocated memory--")
        self.p.free()

Overview

The AnyType trait in Mojo programming language is a built-in trait that defines a type with a lifecycle, specifically emphasizing the need for a destructor. This trait is crucial for managing the lifetime of objects, ensuring that resources are properly released when an object's lifetime ends. It is particularly important for non-trivial types that allocate resources or perform significant actions during their lifecycle.

Key Features

Use Cases

Considerations

Compatibility

As a built-in trait of the Mojo programming language, AnyType is inherently compatible with all Mojo features and constructs. However, its utility and implications are particularly relevant in contexts involving resource management and object lifecycle handling.

This conceptual documentation provides a high-level understanding of the AnyType trait, emphasizing its role in resource management and object lifecycle in the Mojo programming language.