Khi tôi viết một mã đơn giản cho kim loại trần mà không sử dụng libcore tôi nhận được lỗi sau:Thực hiện thao tác cơ bản để tích hợp trong các loại mà không sử dụng libcore
error: binary operation
!=
cannot be applied to typeu32
[E0369]
Straight thực hiện chuyển tiếp phải đối mặt với vấn đề con gà và quả trứng :
#![crate_type = "lib"]
#![feature(no_std, no_core, lang_items)]
#![no_std]
#![no_core]
#[lang = "sized"]
pub trait Sized {}
#[lang = "sync"]
pub trait Sync {}
pub const CONST1: u32 = 1;
pub const CONST2: u32 = 2;
pub struct Struct {
pub field: u32,
}
impl Sync for Struct {}
pub static VAR: Struct = Struct {
field: CONST1 + CONST2,
};
Ở đây tôi nhận được lỗi sau:
error: binary operation
+
cannot be applied to typeu32
[E0369]
"* Thực ra tôi đã giải quyết được vấn đề của mình *" - bạn cũng có thể thêm cách bạn giải quyết nó như một câu trả lời; đó là hành vi được chấp nhận hoàn toàn và được khuyến khích. – Shepmaster
Nói chính xác hơn là tôi đã tìm thấy giải pháp cho vấn đề (chỉ cần sao chép đoạn mã libcore tương ứng), không giải quyết được. Vì vậy, tôi không thể thêm câu trả lời. – ababo
Tôi không thể sao chép lỗi của bạn mà bạn mô tả trên [sân chơi] (https://play.rust-lang.org/?gist=7c9ce3e7575ffc7b76e2&version=nightly) (cảnh báo! Nhiều hack để có được nó để biên dịch!). Nó biên dịch tốt sau khi giải quyết tất cả các lỗi "mục lang thiếu". Bạn có thể cung cấp một liên kết đến một playpen thể hiện vấn đề của bạn? – thirtythreeforty