আমি একক প্রেরণাদির সাহায্যে রাস্টে প্রচুর ধরণের মুখোমুখি হয়েছি:
'static
'r
'a
সেই প্রেরণাদির তাৎপর্য কী? সম্ভবত এটি রেফারেন্সগুলির সংশোধক ( &)? রেফারেন্স নির্দিষ্ট জেনেরিক টাইপিং? আমি জানি না যে এটির জন্য নথিপত্র কোথায় লুকিয়ে আছে।
আমি একক প্রেরণাদির সাহায্যে রাস্টে প্রচুর ধরণের মুখোমুখি হয়েছি:
'static
'r
'a
সেই প্রেরণাদির তাৎপর্য কী? সম্ভবত এটি রেফারেন্সগুলির সংশোধক ( &)? রেফারেন্স নির্দিষ্ট জেনেরিক টাইপিং? আমি জানি না যে এটির জন্য নথিপত্র কোথায় লুকিয়ে আছে।
উত্তর:
এগুলি হ'ল রাস্টের নামকরা জীবনকাল।
মরিচা প্রোগ্রামিং ভাষা থেকে উদ্ধৃতি :
মরিচায় প্রতিটি রেফারেন্সের আজীবন সময় থাকে, যা সেই রেফারেন্সটি বৈধ is বেশিরভাগ সময়কালীন সময়গুলি অন্তর্নিহিত এবং অনুমিত হয়, ঠিক যেমন বেশিরভাগ সময় টাইপগুলি অনুমান করা হয়। একইভাবে যখন আমাদের ধরণের টীকাগুলি দিতে হয় কারণ একাধিক প্রকারের সম্ভাবনা রয়েছে, এমন কিছু ক্ষেত্রে রয়েছে যেখানে উল্লেখের লাইফটাইমগুলি কয়েকটি ভিন্ন উপায়ে সম্পর্কিত হতে পারে, সুতরাং জাস্ট জেনারিক আজীবন প্যারামিটারগুলি ব্যবহার করে সম্পর্কগুলি বর্নিত করার প্রয়োজন যাতে এটি নিশ্চিত করতে পারে রানটাইমের সময় ব্যবহৃত প্রকৃত উল্লেখ অবশ্যই কার্যকর হবে।
লাইফটাইম টীকাগুলি যে কোনও রেফারেন্স জড়িত কত দিন তা পরিবর্তন করে না। স্বাক্ষর একটি জেনেরিক টাইপ প্যারামিটার নির্দিষ্ট করে যখন ফাংশনগুলি যে কোনও ধরণের গ্রহণ করতে পারে, ঠিক সেইভাবে ফাংশনগুলি কোনও আজীবন সঙ্গে রেফারেন্স গ্রহণ করতে পারে যখন স্বাক্ষর জেনেরিক আজীবন প্যারামিটার নির্দিষ্ট করে। আজীবন টীকাগুলি যা করে তা হ'ল একে অপরের সাথে একাধিক উল্লেখের লাইফ টাইম rela
লাইফটাইম টীকাগুলিতে কিছুটা অস্বাভাবিক বাক্য গঠন রয়েছে: আজীবন প্যারামিটারের নাম অবশ্যই অ্যাডোস্ট্রোফ দিয়ে শুরু করা উচিত
'। আজীবন প্যারামিটারগুলির নামগুলি সাধারণত সমস্ত ছোট হাতের অক্ষর থাকে এবং জেনেরিক ধরণের মতো তাদের নামগুলি সাধারণত খুব ছোট হয়।'aবেশিরভাগ মানুষ একটি নাম ডিফল্ট হিসাবে ব্যবহার করে। লাইফটাইম প্যারামিটার টীকাগুলি&একটি রেফারেন্সের পরে চলে যায় এবং একটি স্থান রেফারেন্সের ধরণ থেকে আজীবন টীকাটি পৃথক করে।
অন্য উপায়ে বলেছিলেন, একটি আজীবন মৃত্যুদন্ড কার্যকর হওয়ার সময়টিকে প্রায় সমান করে দেয় যার সময় একটি রেফারেন্স নির্দেশ করে যে ডেটা বৈধ হয়। মরিচা সংকলক সুরক্ষিতভাবে সবচেয়ে স্বল্পতম জীবনকালকে রক্ষণশীলভাবে অনুমান করবে। আপনি যদি সংকলকটি বলতে চান যে কোনও সংক্ষিপ্ত প্রাক্কলনের তুলনায় একটি রেফারেন্স দীর্ঘস্থায়ী হয় তবে আপনি এটির নামটি রেখে বলতে পারেন যে আউটপুট রেফারেন্সটি উদাহরণস্বরূপ, প্রদত্ত ইনপুট রেফারেন্সের মতোই আজীবন থাকে।
'staticপ্রোগ্রামের সময়কাল জন্য - জীবদ্দশায় একটি বিশেষ জীবনকাল, দীর্ঘতম সব জীবনকালের বসবাস করতেন হয়। একটি আদর্শ উদাহরণ স্ট্রিং "আক্ষরিক" যা প্রোগ্রাম / মডিউলটির জীবদ্দশায় সর্বদা উপলব্ধ থাকবে।
এই স্লাইড ডেক থেকে আপনি স্লাইড 29-এর প্রায় শুরু করে আরও তথ্য পেতে পারেন ।
রাস্টে লাইফটাইমগুলি জীবনকালকে কিছুটা গভীরতার সাথে আলোচনা করে।
কুইকস00 এর দুর্দান্ত উত্তরে যোগ করতে, নামকরা লাইফটাইমগুলিও মরিচা সংকলকটিতে ফেরত ধার করা ভেরিয়েবলের উত্স নির্দেশ করতে ব্যবহৃত হয়।
এই ফাংশন
pub fn f(a: &str, b: &str) -> &str {
b
}
কম্পাইল করা হবে না কারণ এটি একটি ধার মান কিন্তু তা থেকে এটা ধার নির্দিষ্ট করে না aবা b।
এটি ঠিক করতে, আপনি একটি নামকৃত জীবনকাল ঘোষণা করবেন bএবং একই জীবনকাল এবং রিটার্ন টাইপের জন্য ব্যবহার করবেন :
pub fn f<'r>(a: &str, b: &'r str) -> &'r str {
// ---- --- ---
b
}
এবং এটি প্রত্যাশিত হিসাবে ব্যবহার করুন
f("a", "b")