Skip to content

resource.aug ​

Move ownership · Source and specification

Files in this project

Code ​

aug
// aug-spec: "resource.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
Resource() implements IResource:
    drop():
        pass
interface IResource:
    pass
make() returns own Resource:
    own Resource value = Resource()
    return value
consume(resolve Console console, own Resource value):
    console.write(value="consumed")
aug
// aug-spec: "resource.aug.md" explains this file. Read it before changes; refresh with aug spec.
import Console from august.io
Resource() implements IResource {
    drop() {
        pass
    }
}
interface IResource {
    pass
}
make() returns own Resource {
    own Resource value = Resource()
    return value
}
consume(resolve Console console, own Resource value) {
    console.write(value="consumed")
}

Compiled specification ​

Interactions and sequences

Resource · class · source ​

It implements IResource.

Resource.drop · source ​

It continues without an operation. source

Checked interface
text
drop() returns void

IResource · interface · source ​

make · source ​

It returns ownership of Resource. It creates Resource and stores the result in owned value (Resource). It returns value. source

Checked interface
text
make() returns own Resource

It returns ownership of Resource.

consume · source ​

It takes value as Resource with ownership transferred. It gets console (Console) from dependency injection. It can call Console.write. It passes "consumed" to console.write. source

Checked interface
text
consume(resolve Console console, own Resource value) returns void uses Console.write

It takes value as Resource with ownership transferred. It gets console (Console) from dependency injection. It can call Console.write.

Dependencies ​

It uses Console (write) from august.io.

Last updated:

The world runs on language