Binding a mojo version of rust uuid.
| Project | Package | Host | Rank | Description |
|---|---|---|---|---|
| ✅ uuid-ffi | libuuid_ffi | prefix.dev | ⭐️⭐️⭐️ | uuid-rs ffi package |
| ✅ uuid | uuid | prefix.dev | ⭐️⭐️⭐️⭐️ | uuid-mojo package |
- Import dependencies:
# First add 2 channel sources, including uuid-ffi package and uuid package
channels = [
"https://conda.modular.com/max-nightly",
"https://repo.prefix.dev/better-ffi", # contains uuid-ffi package
"https://repo.prefix.dev/better-mojo", # contains uuid mojo package
"conda-forge",
]
# Add 2 dependency packages, including uuid-ffi package and uuid package
[dependencies]
mojo = ">=1.0.0b2.dev2026052215,<2"
# FFI dependency
libuuid_ffi = ">=0.2.4,<0.3"
# Mojo package dependency
uuid = ">=0.2.5,<0.3"
- ✅ Simple example:
import uuid
def test_uuid() raises:
# implement style 1:
var id = uuid.uuid_v4() # auto free memory
var id2 = uuid.uuid_v7() # auto free memory
# implement style 2:
var id3 = uuid.gen_uuid_v4()
var id4 = uuid.gen_uuid_v7() # auto free memory
print(id)
print(id2)
print(id3)
print(id4)
def main() raises:
test_uuid()
- ✅ Complete example examples/try-uuid
- Includes complete package dependency import methods
# install dependencies
pixi install
# run
pixi run mojo src/main.mojo
- Install Taskfile: build tool
- Install Rust
- Install pixi
- Install rattler-build: package management tool, compile + publish rust binary packages
- Install mojo
task setup- ✅ Build and debug uuid-ffi package
# run examples
task ffi:r
# build uuid-ffi package
task ffi:b
# release uuid-ffi package
task ffi:rel
- ✅ Build and debug uuid examples
# run examples
task uuid:r
# release
task release:rs
task release:mojo
# publish to prefix.dev
task publish:ffi
task publish:mojo
- ✅ Compile and release Linux version, based on
orbstackvirtual machine- Note: each time you need to publish the ffi library for
3 OS versionsto prefix.dev first, then publish the uuid package. (dependency order)
- Note: each time you need to publish the ffi library for
# list available virtual machines
orbctl list
# connect to linux-aarch64 architecture virtual machine, execute compile + publish
orbctl run -m u22dev
# connect to linux-64 architecture virtual machine, execute compile + publish
orbctl run -m u22build