docs / stdlib / lang

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

codec

  1. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

String

cajeta.lang.String — immutable UTF-8 text, the single string type for Cajeta. Strings are read-only: transformations return a fresh #String rather than mutating in place, while query methods (count, size, contains, indexOf, startsWith, codepointAt, …) read without allocating. substring and trim are zero-copy — the result is a windowed view sharing the source’s root buffer, not a copy. The owned constructor String(#int8[] bytes, int32 byteLength) takes ownership of the caller’s buffer and frees it when the String drops — the builder path every buffer-producing API uses. Equality is content-based: == is a null-safe byte-exact compare (operator== delegates to equals), so strings key cleanly into HashMap and HashSet.

String s = "  Hello, World  ";
String clean #= s.trim();                 // "Hello, World" — zero-copy window
boolean hi = clean.startsWith("Hello");  // true
int64 comma = clean.indexOf(",");        // 5
String loud #= clean.toUpperCase();       // "HELLO, WORLD"
int64 cps = clean.count();               // 12 — codepoints, not bytes
int8[] buf = heap int8[2];
buf[0] = (int8) 104;                     // 'h'
buf[1] = (int8) 105;                     // 'i'
String own = heap String(#buf, 2);       // "hi" — takes ownership of buf

Methods

Signature
String()Constructs the empty String (the empty literal "" produces an equivalent value)
String(#int8[] bytes, int32 byteLength)Ownership-transfer constructor — takes the caller’s byte buffer and owns it (this String’s drop frees it)
int64 hash()Content-based hash overriding Object’s identity hash
int64 count()Number of Unicode characters (codepoints); O(N) on first call, then cached
int64 size()Byte size of the underlying data buffer
boolean isEmpty()True when this String carries zero bytes
boolean equals(String other)Byte-for-byte equality
static boolean operator== (String a, String b)Null-safe, byte-exact value == (delegates to equals)
int8 charAt(int32 idx)Byte at the given byte index, or 0 if out of range
int64 indexOf(String needle)First byte-index where needle appears, or -1
int64 indexOfFrom(String needle, int64 start)indexOf starting the scan at byte start
boolean startsWith(String prefix)True iff prefix’s bytes appear at the start
boolean endsWith(String suffix)True iff suffix’s bytes appear at the end
boolean contains(String needle)True iff needle’s bytes appear anywhere
#String substring(int32 begin, int32 end)Half-open byte-indexed window [begin, end) — zero-copy, shares the root buffer
#String toUpperCase()New String with ASCII lowercase mapped to uppercase
#String toLowerCase()New String with ASCII uppercase mapped to lowercase
#String trim()Strips leading and trailing ASCII whitespace — zero-copy window
#String replace(String from, String repl)New String with every non-overlapping occurrence of from replaced by repl
int8 byteAt(int32 index)Raw byte at the given byte index
#int8[] toBytes()The effective byte window as a fresh caller-owned array — the view-safe replacement for reading .bytes raw
char codepointAt(int32 cpIdx)Unicode codepoint at the given codepoint index

⚑ = @EntryPoint

The compiler rewrites substring/trim calls to the internal borrow-mode variants substringView/trimView when the receiving local provably never leaves its scope; they are not intended for direct use.

See also

Source: docs/stdlib/lang/String.md · 2 min read · 501 words