От: | Разраб | ||
Дата: | 15.09.23 03:29 | ||
Оценка: |
//utils.rs
use std::io;
pub fn readln(prompt: &str) -> String {
println!("{}", prompt);
let mut input = String::new();
_ = io::stdin().read_line(&mut input);
return String::from(&input[..input.len() - 1]);// <- небольшой оверхед по-моему, ведь метод называется read_line ;-)
}
//main.rs
mod utils;// <- вот это мне показалось совсем не очевидно
struct Person {
name: String,
}
fn main() {
let name = utils::readln("What is your name?");
let person = Person {
name: String::from(name),
};
println!("Привет, {}!", person.name);
}
//utils.zig
const std = @import("std");
pub fn readln(prompt: []const u8) ![]u8 {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
const stdin = std.io.getStdIn();
std.debug.print("{s}", .{ prompt });
var input = std.ArrayList(u8).init(allocator);
defer input.deinit();
try stdin.reader().streamUntilDelimiter(input.writer(), '\n', 1024);
return input.items;
}
//main.zig
const std = @import("std");
const utils = @import("utils.zig");
const Person = struct {
name : []u8
};
pub fn main() !void {
var name = try utils.readln("What is your name?\n");
//defer name;
var person = Person { .name = name};
std.debug.print("Hello, {!}!", .{person});
}
Не смог найти хорошего примера именно функции для зиг, в то же время в раст как докуметация, так и помощь компилятора на высоте.Hello, main.Person{ .name = { Segmentation fault at address 0x7f793c7b7000
/snap/zig/8746/lib/std/fmt.zig:662:29: 0x264ce6 in formatType__anon_8745 (zello)
for (value, 0..) |elem, i| {