Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

পরিশিষ্ট খ: অপারেটর এবং প্রতীক

এই পরিশিষ্টে 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বিটওয়াইজ ANDBitAnd
&=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বিটওয়াইজ এক্সক্লুসিভ ORBitXor
^=var ^= exprবিটওয়াইজ এক্সক্লুসিভ OR এবং অ্যাসাইনমেন্টBitXorAssign
```patpat`
```exprexpr`
`=``var= expr`
```expr
?expr?এরর প্রোপাগেশন

নন-অপারেটর প্রতীক

নিচের তালিকায় এমন সব প্রতীক রয়েছে যা অপারেটর হিসেবে কাজ করে না; অর্থাৎ, তারা কোনো ফাংশন বা মেথড কলের মতো আচরণ করে না।

সারণী খ-২ এ এমন প্রতীক দেখানো হয়েছে যা নিজে থেকেই উপস্থিত হয় এবং বিভিন্ন স্থানে বৈধ।

সারণী খ-২: স্বতন্ত্র সিনট্যাক্স

প্রতীকব্যাখ্যা
'identনামযুক্ত লাইফটাইম বা লুপ লেবেল
u8, i32, f64, usize, ইত্যাদি দ্বারা অবিলম্বে অনুসরণ করা সংখ্যানির্দিষ্ট টাইপের নিউমেরিক লিটারাল
"..."স্ট্রিং লিটারাল
r"...", r#"..."#, r##"..."##, ইত্যাদির স্ট্রিং লিটারাল, এস্কেপ ক্যারেক্টার প্রসেস করা হয় না
b"..."বাইট স্ট্রিং লিটারাল; স্ট্রিং এর পরিবর্তে বাইটের একটি অ্যারে তৈরি করে
br"...", br#"..."#, br##"..."##, ইত্যাদির বাইট স্ট্রিং লিটারাল, র এবং বাইট স্ট্রিং লিটারালের সংমিশ্রণ
'...'ক্যারেক্টার লিটারাল
b'...'ASCII বাইট লিটারাল
`...
!ডাইভার্জিং ফাংশনের জন্য সর্বদা খালি বটম টাইপ
_"উপেক্ষিত" প্যাটার্ন বাইন্ডিং; ইন্টিজার লিটারালকে পঠনযোগ্য করতেও ব্যবহৃত হয়

সারণী খ-৩ এ এমন প্রতীক দেখানো হয়েছে যা মডিউল হায়ারার্কির মাধ্যমে একটি আইটেমের পাথের প্রসঙ্গে উপস্থিত হয়।

সারণী খ-৩: পাথ-সম্পর্কিত সিনট্যাক্স

প্রতীকব্যাখ্যা
ident::identনেমস্পেস পাথ
::pathextern 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 ব্যবহার করে