Add `Node` union
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Xem xét các kiểu nút AST hiện có và so sánh các thiết kế Node sở hữu và NodeRef tham chiếu được đề xuất. Giải quyết các yêu cầu về cách đặt tên và quyền sở hữu trước khi triển khai enum, các phương thức chuyển đổi và các kiểm tra kiểu. Công việc được xem là hoàn tất khi các kiểu nút được hỗ trợ và API bắt buộc đã được thống nhất và được bao phủ bởi các bài kiểm thử.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Add a new Node union that is an enum over all node types. This can be useful when implementing methods that can operate on any node. For example, Ruff's formatter has (roughly) the API format(node: AnyNode) -> String
I haven't figured out the full requirements yet, and I don't know yet if we'll need both the owned and reference versions:
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
enum Node {
IfStmt(ast::IfStmt),
ConstantExpr(ast::ConstantExpr),
...
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, is_macro)]
enum NodeRef<'a> {
IfStmt(&'a ast::IfStmt),
ConstantExpr(&'a ast::ConstantExpr)
...
}
Note: An alternative naming more in line with
PathandPathBufwould be to name the typesNodeBuf(owned) andNode(reference)
The enums should have the following basic methods:
if_stmt(self) -> Option<ast::IfStmt>as_if_stmt(&self) -> Option<&ast::IfStmt>const is_if_stmt(&self) -> bool
Node could also implement AsRef that returns a NodeRef
I may have time to work on this sometime soon but I wanted to put this up for discussion first to get feedback.
- Ngôn ngữ chính
- Rust
- Star
- 117
- Fork
- 38
- Merge trung bình
- 4 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của RustPython/Parser
-
Maintenance status Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 25/100
RustPython/Parser#140 · 3 bình luận ·
-
`unic` is unmaintained Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
RustPython/Parser#139 · 3 bình luận ·
-
cargo audit paste Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
RustPython/Parser#137 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 50/100
RustPython/Parser#133 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
RustPython/Parser#130 ·
Tất cả issue của RustPython/Parser
Issue tương tự
-
risk:low runtime status:in-progress type:test
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
EricSpencer00/Resilient#4835 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
bisq-network/bisq-musig#204 ·
-
agent:ready documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
cesarferreira/stax#890 ·