পরিশিষ্ট খ: অপারেটর এবং প্রতীক
এই পরিশিষ্টে Rust-এর সিনট্যাক্সের একটি শব্দকোষ রয়েছে, যার মধ্যে অপারেটর এবং অন্যান্য প্রতীকগুলো অন্তর্ভুক্ত যা নিজে থেকেই অথবা পাথ, জেনেরিক, ট্রেইট বাউন্ড, ম্যাক্রো, অ্যাট্রিবিউট, কমেন্ট, টাপল এবং ব্র্যাকেটের প্রসঙ্গে উপস্থিত হয়।
অপারেটর
সারণী খ-১ এ Rust-এর অপারেটর, প্রসঙ্গে অপারেটরটি কীভাবে প্রদর্শিত হবে তার একটি উদাহরণ, একটি সংক্ষিপ্ত ব্যাখ্যা এবং সেই অপারেটরটি ওভারলোডযোগ্য কিনা তা রয়েছে। যদি কোনো অপারেটর ওভারলোডযোগ্য হয়, তবে সেই অপারেটরটিকে ওভারলোড করার জন্য ব্যবহৃত প্রাসঙ্গিক ট্রেইটটি তালিকাভুক্ত করা হয়েছে।
সারণী খ-১: অপারেটর
| অপারেটর | উদাহরণ | ব্যাখ্যা | ওভারলোডযোগ্য? |
|---|---|---|---|
! | ident!(...), ident!{...}, ident![...] | ম্যাক্রো এক্সপ্যানশন | |
! | !expr | বিটওয়াইজ বা লজিক্যাল কমপ্লিমেন্ট | Not |
!= | expr != expr | অসমতা তুলনা | PartialEq |
% | expr % expr | গাণিতিক ভাগশেষ | Rem |
%= | var %= expr | গাণিতিক ভাগশেষ এবং অ্যাসাইনমেন্ট | RemAssign |
& | &expr, &mut expr | ধার (Borrow) | |
& | &type, &mut type, &'a type, &'a mut type | ধার করা পয়েন্টার টাইপ | |
& | expr & expr | বিটওয়াইজ AND | BitAnd |
&= | var &= expr | বিটওয়াইজ AND এবং অ্যাসাইনমেন্ট | BitAndAssign |
&& | expr && expr | শর্ট-সার্কিটিং লজিক্যাল AND | |
* | expr * expr | গাণিতিক গুণ | Mul |
*= | var *= expr | গাণিতিক গুণ এবং অ্যাসাইনমেন্ট | MulAssign |
* | *expr | ডিরেফারেন্স | Deref |
* | *const type, *mut type | র পয়েন্টার | |
+ | trait + trait, 'a + trait | যৌগিক টাইপ কনস্ট্রেইন্ট | |
+ | expr + expr | গাণিতিক যোগ | Add |
+= | var += expr | গাণিতিক যোগ এবং অ্যাসাইনমেন্ট | AddAssign |
, | expr, expr | আর্গুমেন্ট এবং এলিমেন্ট বিভাজক | |
- | - expr | গাণিতিক নেগেশন | Neg |
- | expr - expr | গাণিতিক বিয়োগ | Sub |
-= | var -= expr | গাণিতিক বিয়োগ এবং অ্যাসাইনমেন্ট | SubAssign |
-> | fn(...) -> type, ` | ... | -> type` |
. | expr.ident | ফিল্ড অ্যাক্সেস | |
. | expr.ident(expr, ...) | মেথড কল | |
. | expr.0, expr.1, ইত্যাদি | টাপল ইনডেক্সিং | |
.. | .., expr.., ..expr, expr..expr | ডান-এক্সক্লুসিভ রেঞ্জ লিটারাল | PartialOrd |
..= | ..=expr, expr..=expr | ডান-ইনক্লুসিভ রেঞ্জ লিটারাল | PartialOrd |
.. | ..expr | স্ট্রাকট লিটারাল আপডেট সিনট্যাক্স | |
.. | variant(x, ..), struct_type { x, .. } | “এবং বাকিটা” প্যাটার্ন বাইন্ডিং | |
... | expr...expr | (অপ্রচলিত, এর পরিবর্তে ..= ব্যবহার করুন) একটি প্যাটার্নে: ইনক্লুসিভ রেঞ্জ প্যাটার্ন | |
/ | expr / expr | গাণিতিক ভাগ | Div |
/= | var /= expr | গাণিতিক ভাগ এবং অ্যাসাইনমেন্ট | DivAssign |
: | pat: type, ident: type | কনস্ট্রেইন্ট | |
: | ident: expr | স্ট্রাকট ফিল্ড ইনিশিয়ালাইজার | |
: | 'a: loop {...} | লুপ লেবেল | |
; | expr; | স্টেটমেন্ট এবং আইটেম টার্মিনেটর | |
; | [...; len] | ফিক্সড-সাইজ অ্যারে সিনট্যাক্সের অংশ | |
<< | expr << expr | লেফট-শিফট | Shl |
<<= | var <<= expr | লেফট-শিফট এবং অ্যাসাইনমেন্ট | ShlAssign |
< | expr < expr | ছোট তুলনা | PartialOrd |
<= | expr <= expr | ছোট বা সমান তুলনা | PartialOrd |
= | var = expr, ident = type | অ্যাসাইনমেন্ট/সমতা | |
== | expr == expr | সমতা তুলনা | PartialEq |
=> | pat => expr | ম্যাচ আর্ম সিনট্যাক্সের অংশ | |
> | expr > expr | বড় তুলনা | PartialOrd |
>= | expr >= expr | বড় বা সমান তুলনা | PartialOrd |
>> | expr >> expr | রাইট-শিফট | Shr |
>>= | var >>= expr | রাইট-শিফট এবং অ্যাসাইনমেন্ট | ShrAssign |
@ | ident @ pat | প্যাটার্ন বাইন্ডিং | |
^ | expr ^ expr | বিটওয়াইজ এক্সক্লুসিভ OR | BitXor |
^= | var ^= expr | বিটওয়াইজ এক্সক্লুসিভ OR এবং অ্যাসাইনমেন্ট | BitXorAssign |
| ` | ` | `pat | pat` |
| ` | ` | `expr | expr` |
| ` | =` | `var | = expr` |
| ` | ` | `expr | |
? | expr? | এরর প্রোপাগেশন |
নন-অপারেটর প্রতীক
নিচের তালিকায় এমন সব প্রতীক রয়েছে যা অপারেটর হিসেবে কাজ করে না; অর্থাৎ, তারা কোনো ফাংশন বা মেথড কলের মতো আচরণ করে না।
সারণী খ-২ এ এমন প্রতীক দেখানো হয়েছে যা নিজে থেকেই উপস্থিত হয় এবং বিভিন্ন স্থানে বৈধ।
সারণী খ-২: স্বতন্ত্র সিনট্যাক্স
| প্রতীক | ব্যাখ্যা |
|---|---|
'ident | নামযুক্ত লাইফটাইম বা লুপ লেবেল |
u8, i32, f64, usize, ইত্যাদি দ্বারা অবিলম্বে অনুসরণ করা সংখ্যা | নির্দিষ্ট টাইপের নিউমেরিক লিটারাল |
"..." | স্ট্রিং লিটারাল |
r"...", r#"..."#, r##"..."##, ইত্যাদি | র স্ট্রিং লিটারাল, এস্কেপ ক্যারেক্টার প্রসেস করা হয় না |
b"..." | বাইট স্ট্রিং লিটারাল; স্ট্রিং এর পরিবর্তে বাইটের একটি অ্যারে তৈরি করে |
br"...", br#"..."#, br##"..."##, ইত্যাদি | র বাইট স্ট্রিং লিটারাল, র এবং বাইট স্ট্রিং লিটারালের সংমিশ্রণ |
'...' | ক্যারেক্টার লিটারাল |
b'...' | ASCII বাইট লিটারাল |
| ` | ... |
! | ডাইভার্জিং ফাংশনের জন্য সর্বদা খালি বটম টাইপ |
_ | "উপেক্ষিত" প্যাটার্ন বাইন্ডিং; ইন্টিজার লিটারালকে পঠনযোগ্য করতেও ব্যবহৃত হয় |
সারণী খ-৩ এ এমন প্রতীক দেখানো হয়েছে যা মডিউল হায়ারার্কির মাধ্যমে একটি আইটেমের পাথের প্রসঙ্গে উপস্থিত হয়।
সারণী খ-৩: পাথ-সম্পর্কিত সিনট্যাক্স
| প্রতীক | ব্যাখ্যা |
|---|---|
ident::ident | নেমস্পেস পাথ |
::path | extern prelude-এর সাপেক্ষে পাথ, যেখানে অন্য সব ক্রেট রুট করা হয় (অর্থাৎ, ক্রেটের নামসহ একটি স্পষ্টভাবে অ্যাবসোলিউট পাথ) |
self::path | বর্তমান মডিউলের সাপেক্ষে পাথ (অর্থাৎ, একটি স্পষ্টভাবে রিলেটিভ পাথ) |
super::path | বর্তমান মডিউলের প্যারেন্টের সাপেক্ষে পাথ |
type::ident, <type as trait>::ident | অ্যাসোসিয়েটেড কনস্ট্যান্ট, ফাংশন, এবং টাইপ |
<type>::... | এমন একটি টাইপের জন্য অ্যাসোসিয়েটেড আইটেম যা সরাসরি নাম দেওয়া যায় না (যেমন, <&T>::..., <[T]>::..., ইত্যাদি) |
trait::method(...) | মেথড কলকে দ্ব্যর্থহীন করা, যে ট্রেইটটি এটি ডিফাইন করে তার নাম দিয়ে |
type::method(...) | মেথড কলকে দ্ব্যর্থহীন করা, যে টাইপের জন্য এটি ডিফাইন করা হয়েছে তার নাম দিয়ে |
<type as trait>::method(...) | ট্রেইট এবং টাইপের নাম দিয়ে মেথড কলকে দ্ব্যর্থহীন করা |
সারণী খ-৪ এ এমন প্রতীক দেখানো হয়েছে যা জেনেরিক টাইপ প্যারামিটার ব্যবহারের প্রসঙ্গে উপস্থিত হয়।
সারণী খ-৪: জেনেরিক
| প্রতীক | ব্যাখ্যা |
|---|---|
path<...> | একটি টাইপে জেনেরিক টাইপের জন্য প্যারামিটার নির্দিষ্ট করে (যেমন, Vec<u8>) |
path::<...>, method::<...> | একটি এক্সপ্রেশনে জেনেরিক টাইপ, ফাংশন, বা মেথডের জন্য প্যারামিটার নির্দিষ্ট করে; প্রায়শই টার্বোফিশ হিসাবে উল্লেখ করা হয় (যেমন, "42".parse::<i32>()) |
fn ident<...> ... | জেনেরিক ফাংশন ডিফাইন করে |
struct ident<...> ... | জেনেরিক স্ট্রাকচার ডিফাইন করে |
enum ident<...> ... | জেনেরিক ইনুমারেশন ডিফাইন করে |
impl<...> ... | জেনেরিক ইমপ্লিমেন্টেশন ডিফাইন করে |
for<...> type | হায়ার-র্যাঙ্কড লাইফটাইম বাউন্ড |
type<ident=type> | একটি জেনেরিক টাইপ যেখানে এক বা একাধিক অ্যাসোসিয়েটেড টাইপের নির্দিষ্ট অ্যাসাইনমেন্ট থাকে (যেমন, Iterator<Item=T>) |
সারণী খ-৫ এ এমন প্রতীক দেখানো হয়েছে যা জেনেরিক টাইপ প্যারামিটারকে ট্রেইট বাউন্ড দিয়ে সীমাবদ্ধ করার প্রসঙ্গে উপস্থিত হয়।
সারণী খ-৫: ট্রেইট বাউন্ড কনস্ট্রেইন্ট
| প্রতীক | ব্যাখ্যা |
|---|---|
T: U | জেনেরিক প্যারামিটার T, U ইমপ্লিমেন্ট করে এমন টাইপগুলিতে সীমাবদ্ধ |
T: 'a | জেনেরিক টাইপ T অবশ্যই 'a লাইফটাইমকে আউটলাইভ করবে (অর্থাৎ টাইপটিতে ট্রানজিটিভভাবে 'a এর চেয়ে ছোট লাইফটাইম সহ কোনো রেফারেন্স থাকতে পারে না) |
T: 'static | জেনেরিক টাইপ T-তে 'static ছাড়া অন্য কোনো ধার করা রেফারেন্স নেই |
'b: 'a | জেনেরিক লাইফটাইম 'b অবশ্যই 'a লাইফটাইমকে আউটলাইভ করবে |
T: ?Sized | জেনেরিক টাইপ প্যারামিটারকে ডাইনামিক্যালি সাইজড টাইপ হতে অনুমতি দেয় |
'a + trait, trait + trait | যৌগিক টাইপ কনস্ট্রেইন্ট |
সারণী খ-৬ এ এমন প্রতীক দেখানো হয়েছে যা ম্যাক্রো কল বা ডিফাইন করার এবং একটি আইটেমের উপর অ্যাট্রিবিউট নির্দিষ্ট করার প্রসঙ্গে উপস্থিত হয়।
সারণী খ-৬: ম্যাক্রো এবং অ্যাট্রিবিউট
| প্রতীক | ব্যাখ্যা |
|---|---|
#[meta] | আউটার অ্যাট্রিবিউট |
#![meta] | ইনার অ্যাট্রিবিউট |
$ident | ম্যাক্রো সাবস্টিটিউশন |
$ident:kind | ম্যাক্রো মেটাভেরিয়েবল |
$(...)... | ম্যাক্রো রিপিটিশন |
ident!(...), ident!{...}, ident![...] | ম্যাক্রো ইনভোকেশন |
সারণী খ-৭ এ এমন প্রতীক দেখানো হয়েছে যা কমেন্ট তৈরি করে।
সারণী খ-৭: কমেন্ট
| প্রতীক | ব্যাখ্যা |
|---|---|
// | লাইন কমেন্ট |
//! | ইনার লাইন ডক কমেন্ট |
/// | আউটার লাইন ডক কমেন্ট |
/*...*/ | ব্লক কমেন্ট |
/*!...*/ | ইনার ব্লক ডক কমেন্ট |
/**...*/ | আউটার ব্লক ডক কমেন্ট |
সারণী খ-৮ এ সেইসব প্রসঙ্গ দেখানো হয়েছে যেখানে প্রথম বন্ধনী (parentheses) ব্যবহৃত হয়।
সারণী খ-৮: প্রথম বন্ধনী
| প্রতীক | ব্যাখ্যা |
|---|---|
() | খালি টাপল (একে ইউনিটও বলা হয়), লিটারাল এবং টাইপ উভয়ই |
(expr) | প্যারেন্থেসাইজড এক্সপ্রেশন |
(expr,) | একক-উপাদান টাপল এক্সপ্রেশন |
(type,) | একক-উপাদান টাপল টাইপ |
(expr, ...) | টাপল এক্সপ্রেশন |
(type, ...) | টাপল টাইপ |
expr(expr, ...) | ফাংশন কল এক্সপ্রেশন; টাপল struct এবং টাপল enum ভ্যারিয়েন্ট ইনিশিয়ালাইজ করতেও ব্যবহৃত হয় |
সারণী খ-৯ এ সেইসব প্রসঙ্গ দেখানো হয়েছে যেখানে কোঁকড়া বন্ধনী (curly braces) ব্যবহৃত হয়।
সারণী খ-৯: কোঁকড়া বন্ধনী
| প্রসঙ্গ | ব্যাখ্যা |
|---|---|
{...} | ব্লক এক্সপ্রেশন |
Type {...} | স্ট্রাকট লিটারাল |
সারণী খ-১০ এ সেইসব প্রসঙ্গ দেখানো হয়েছে যেখানে বর্গাকার বন্ধনী (square brackets) ব্যবহৃত হয়।
সারণী খ-১০: বর্গাকার বন্ধনী
| প্রসঙ্গ | ব্যাখ্যা |
|---|---|
[...] | অ্যারে লিটারাল |
[expr; len] | expr এর len সংখ্যক কপি সহ অ্যারে লিটারাল |
[type; len] | type এর len সংখ্যক ইনস্ট্যান্স সহ অ্যারে টাইপ |
expr[expr] | কালেকশন ইন্ডেক্সিং। ওভারলোডযোগ্য (Index, IndexMut) |
expr[..], expr[a..], expr[..b], expr[a..b] | কালেকশন ইন্ডেক্সিং যা কালেকশন স্লাইসিং এর মতো কাজ করে, "ইনডেক্স" হিসেবে Range, RangeFrom, RangeTo, বা RangeFull ব্যবহার করে |