Các loại Rust được biểu thị bằng một dấu nháy đơn là gì?


89

Tôi đã gặp một số kiểu trong Rust được biểu thị bằng một dấu nháy đơn:

'static
'r
'a

Ý nghĩa của dấu nháy đơn đó là gì? Có thể đó là một bổ ngữ của tham chiếu ( &)? Nhập chung cụ thể cho tài liệu tham khảo? Tôi không biết tài liệu về việc này đang cất giấu ở đâu.


1
chúng được đặt tên là vòng đời: static.rust-lang.org/doc/master/guide-lifetimes.html
Arjan

Liên kết trong bình luận trước đó không còn hoạt động. Tôi không biết nếu điều này là tương đương: doc.rust-lang.org/book/lifetimes.html
Ellen Spertus

Liên kết Ellen cũng đã ngừng làm việc - đây là cái mới (tính đến tháng 6 năm 2019): doc.rust-lang.org/book/ch10-03-lifetime-syntax.html

Câu trả lời:


71

Đây là những kiếp sống được đặt tên của Rust.

Trích dẫn từ Ngôn ngữ lập trình Rust :

Mọi tham chiếu trong Rust đều có thời gian tồn tại, là phạm vi mà tham chiếu đó hợp lệ. Hầu hết các thời gian trong cuộc sống là ẩn và được suy luận, giống như hầu hết các loại thời gian được suy ra. Tương tự như khi chúng ta phải chú thích các loại vì có thể có nhiều loại, có những trường hợp vòng đời của các tham chiếu có thể được liên quan theo một số cách khác nhau, vì vậy Rust cần chúng tôi chú thích các mối quan hệ bằng cách sử dụng các tham số thời gian tồn tại chung để có thể đảm bảo các tham chiếu thực tế được sử dụng trong thời gian chạy chắc chắn sẽ hợp lệ.

Các chú thích lâu dài không thay đổi thời gian tồn tại của bất kỳ tham chiếu nào có liên quan. Theo cách tương tự, các hàm có thể chấp nhận bất kỳ kiểu nào khi chữ ký chỉ định một tham số kiểu chung, các hàm có thể chấp nhận các tham chiếu với bất kỳ thời gian tồn tại nào khi chữ ký chỉ định một tham số thời gian tồn tại chung. Những gì chú thích lâu dài làm là liên hệ các vòng đời của nhiều tham chiếu với nhau.

Chú thích toàn thời gian có cú pháp hơi khác thường: tên của các tham số lâu dài phải bắt đầu bằng dấu nháy đơn '. Tên của các tham số thời gian tồn tại thường là tất cả các chữ thường và giống như các kiểu chung, tên của chúng thường rất ngắn. 'alà tên hầu hết mọi người sử dụng làm mặc định. Các chú thích thông số lâu dài đi sau &tham chiếu và một khoảng trắng ngăn cách chú thích toàn thời gian khỏi kiểu của tham chiếu.

Nói một cách khác, thời gian tồn tại ước tính khoảng thời gian thực thi trong đó dữ liệu mà một tham chiếu trỏ đến là hợp lệ. Trình biên dịch Rust sẽ suy ra một cách thận trọng thời gian tồn tại ngắn nhất có thể để an toàn. Nếu bạn muốn cho trình biên dịch biết rằng một tham chiếu tồn tại lâu hơn ước tính ngắn nhất, bạn có thể đặt tên cho nó, ví dụ: tham chiếu đầu ra có cùng thời gian tồn tại với tham chiếu đầu vào nhất định.

Thời 'staticgian tồn tại là thời gian sống đặc biệt, thời gian tồn tại lâu nhất trong tất cả các vòng đời - trong suốt thời gian của chương trình. Ví dụ điển hình là chuỗi "chữ" sẽ luôn có sẵn trong suốt thời gian tồn tại của chương trình / mô-đun.

Bạn có thể lấy thêm thông tin từ trang trình bày này , bắt đầu từ trang trình bày 29.

Lifetimes in Rust cũng thảo luận về các kiếp sống ở một số chiều sâu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.