Skip to main content

Mojo module

arc

Reference-counted smart pointers.

Example usage:

from memory import Arc
var p = Arc(4)
var p2 = p
p2[]=3
print(3 == p[])
from memory import Arc
var p = Arc(4)
var p2 = p
p2[]=3
print(3 == p[])

Subscripting([]) is done by Reference, in order to ensure that the underlying Arc outlive the operation.

It is highly DISCOURAGED to manipulate an Arc through UnsafePointer. Mojo's ASAP deletion policy ensure values are destroyed at last use. Do not unsafely dereference the Arc inner UnsafePointer field. See Lifecycle.

# Illustration of what NOT to do, in order to understand:
print(Arc(String("ok"))._inner[].payload)
#........................^ASAP ^already freed
# Illustration of what NOT to do, in order to understand:
print(Arc(String("ok"))._inner[].payload)
#........................^ASAP ^already freed

Always use Reference subscripting ([]):

print(Arc(String("ok"))[])
print(Arc(String("ok"))[])

Structs

  • Arc: Atomic reference-counted pointer.