Rust's tuples allow for an anonymous, packed, stack-allocated data-structure that holds multiple values.
Example:
let (a, b) = returns_tuple(); // fn returns_tuple() -> (i32, String);
In (free) pascal i'd do it with a named record type, i guess, but it will not let me destructure so i'd need a separate variable.
type
Tuple = packed record
a: integer;
b: string;
end;
var
a: integer;
b: string;
t: tuple;
function returns_tuple (): Tuple;
{ function body ommited }
begin
t := returns_tuple;
a := t.a;
b := t.b;
end.