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

এই পরিশিষ্টে Rust-এর সিনট্যাক্সের একটি শব্দকোষ রয়েছে, যার মধ্যে অপারেটর এবং অন্যান্য প্রতীক রয়েছে যা নিজে থেকে বা পাথ, জেনেরিক, ট্রেইট বাউন্ড, ম্যাক্রো, অ্যাট্রিবিউট, কমেন্ট, টাপল এবং ব্র্যাকেটের প্রসঙ্গে প্রদর্শিত হয়।

অপারেটর

সারণি B-1-এ Rust-এর অপারেটরগুলো, অপারেটরটি কীভাবে প্রসঙ্গে প্রদর্শিত হবে তার একটি উদাহরণ, একটি সংক্ষিপ্ত ব্যাখ্যা এবং সেই অপারেটরটি ওভারলোডযোগ্য কিনা তা রয়েছে। যদি একটি অপারেটর ওভারলোডযোগ্য হয়, তাহলে সেই অপারেটরটিকে ওভারলোড করতে ব্যবহৃত প্রাসঙ্গিক ট্রেইটটি তালিকাভুক্ত করা হয়েছে।

সারণি B-1: অপারেটর

অপারেটরউদাহরণব্যাখ্যাওভারলোডযোগ্য?
!ident!(...), ident!{...}, ident![...]ম্যাক্রো এক্সপ্যানশন
!!exprবিটওয়াইজ বা লজিক্যাল কমপ্লিমেন্টNot
!=expr != exprঅসমতা তুলনাPartialEq
%expr % exprঅ্যারিথমেটিক রিমেইন্ডারRem
%=var %= exprঅ্যারিথমেটিক রিমেইন্ডার এবং অ্যাসাইনমেন্টRemAssign
&&expr, &mut exprবোরো
&&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
|pat | patপ্যাটার্ন অল্টারনেটিভ
|expr | exprবিটওয়াইজ ORBitOr
|=var |= exprবিটওয়াইজ OR এবং অ্যাসাইনমেন্টBitOrAssign
||expr || exprশর্ট-সার্কিটিং লজিক্যাল OR
?expr?এরর প্রোপাগেশন

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

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

সারণি B-2 সেই প্রতীকগুলিকে দেখায় যা নিজে থেকে প্রদর্শিত হয় এবং বিভিন্ন স্থানে বৈধ।

সারণি B-2: স্ট্যান্ড-অ্যালোন সিনট্যাক্স

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

সারণি B-3 সেই প্রতীকগুলিকে দেখায় যা মডিউল হায়ারার্কির মাধ্যমে একটি আইটেমের পাথের প্রসঙ্গে প্রদর্শিত হয়।

সারণি B-3: পাথ-সম্পর্কিত সিনট্যাক্স

প্রতীকব্যাখ্যা
ident::identনেমস্পেস পাথ
::pathএক্সটার্ন প্রি-লুডের সাপেক্ষে পাথ, যেখানে অন্য সমস্ত ক্রেট রুটেড (অর্থাৎ, ক্রেটের নাম সহ একটি স্পষ্টতই অ্যাবসোলিউট পাথ)
self::pathবর্তমান মডিউলের সাপেক্ষে পাথ (অর্থাৎ, একটি স্পষ্টতই রিলেটিভ পাথ)।
super::pathবর্তমান মডিউলের প্যারেন্টের সাপেক্ষে পাথ
type::ident, <type as trait>::identঅ্যাসোসিয়েটেড কনস্ট্যান্ট, ফাংশন এবং টাইপ
<type>::...এমন একটি টাইপের জন্য অ্যাসোসিয়েটেড আইটেম যা সরাসরি নামকরণ করা যায় না (যেমন, <&T>::..., <[T]>::..., ইত্যাদি)
trait::method(...)যে ট্রেইট এটিকে সংজ্ঞায়িত করে তার নামকরণের মাধ্যমে একটি মেথড কলকে দ্ব্যর্থহীন করা
type::method(...)যে টাইপের জন্য এটি সংজ্ঞায়িত করা হয়েছে তার নামকরণের মাধ্যমে একটি মেথড কলকে দ্ব্যর্থহীন করা
<type as trait>::method(...)ট্রেইট এবং টাইপের নামকরণের মাধ্যমে একটি মেথড কলকে দ্ব্যর্থহীন করা

সারণি B-4 সেই প্রতীকগুলিকে দেখায় যা জেনেরিক টাইপ প্যারামিটার ব্যবহারের প্রসঙ্গে প্রদর্শিত হয়।

সারণি B-4: জেনেরিক

প্রতীকব্যাখ্যা
path<...>একটি টাইপে জেনেরিক টাইপের প্যারামিটার নির্দিষ্ট করে (যেমন, Vec<u8>)
path::<...>, method::<...>একটি এক্সপ্রেশনে জেনেরিক টাইপ, ফাংশন বা মেথডের প্যারামিটার নির্দিষ্ট করে; প্রায়শই টার্বোফিশ হিসাবে উল্লেখ করা হয় (যেমন, "42".parse::<i32>())
fn ident<...> ...জেনেরিক ফাংশন সংজ্ঞায়িত করুন
struct ident<...> ...জেনেরিক স্ট্রাকচার সংজ্ঞায়িত করুন
enum ident<...> ...জেনেরিক এনিউমারেশন সংজ্ঞায়িত করুন
impl<...> ...জেনেরিক ইমপ্লিমেন্টেশন সংজ্ঞায়িত করুন
for<...> typeউচ্চ-র‍্যাঙ্কড লাইফটাইম বাউন্ড
type<ident=type>একটি জেনেরিক টাইপ যেখানে এক বা একাধিক অ্যাসোসিয়েটেড টাইপের নির্দিষ্ট অ্যাসাইনমেন্ট রয়েছে (যেমন, Iterator<Item=T>)

সারণি B-5 সেই প্রতীকগুলিকে দেখায় যা ট্রেইট বাউন্ড সহ জেনেরিক টাইপ প্যারামিটারগুলিকে সীমাবদ্ধ করার প্রসঙ্গে প্রদর্শিত হয়।

সারণি B-5: ট্রেইট বাউন্ড কনস্ট্রেইন্ট

প্রতীকব্যাখ্যা
T: Uজেনেরিক প্যারামিটার T এমন টাইপগুলিতে সীমাবদ্ধ যা U ইমপ্লিমেন্ট করে
T: 'aজেনেরিক টাইপ T-কে অবশ্যই লাইফটাইম 'a থেকে বেশি সময় বাঁচতে হবে (অর্থাৎ টাইপটি ট্রানজিটিভভাবে 'a-এর চেয়ে কম লাইফটাইম সহ কোনো রেফারেন্স ধারণ করতে পারে না)
T: 'staticজেনেরিক টাইপ T-তে 'static ছাড়া অন্য কোনো বোরোড রেফারেন্স নেই
'b: 'aজেনেরিক লাইফটাইম 'b-কে অবশ্যই লাইফটাইম 'a থেকে বেশি সময় বাঁচতে হবে
T: ?Sizedজেনেরিক টাইপ প্যারামিটারকে ডায়নামিকভাবে সাইজ করা টাইপ হওয়ার অনুমতি দিন
'a + trait, trait + traitকম্পাউন্ড টাইপ কনস্ট্রেইন্ট

সারণি B-6 সেই প্রতীকগুলিকে দেখায় যা ম্যাক্রো কল করা বা সংজ্ঞায়িত করার এবং একটি আইটেমে অ্যাট্রিবিউট নির্দিষ্ট করার প্রসঙ্গে প্রদর্শিত হয়।

সারণি B-6: ম্যাক্রো এবং অ্যাট্রিবিউট

প্রতীকব্যাখ্যা
#[meta]আউটার অ্যাট্রিবিউট
#![meta]ইনার অ্যাট্রিবিউট
$identম্যাক্রো সাবস্টিটিউশন
$ident:kindম্যাক্রো ক্যাপচার
$(…)…ম্যাক্রো রিপিটেশন
ident!(...), ident!{...}, ident![...]ম্যাক্রো ইনভোকেশন

সারণি B-7 সেই প্রতীকগুলিকে দেখায় যা কমেন্ট তৈরি করে।

সারণি B-7: কমেন্ট

প্রতীকব্যাখ্যা
//লাইন কমেন্ট
//!ইনার লাইন ডক কমেন্ট
///আউটার লাইন ডক কমেন্ট
/*...*/ব্লক কমেন্ট
/*!...*/ইনার ব্লক ডক কমেন্ট
/**...*/আউটার ব্লক ডক কমেন্ট

সারণি B-8-এ দেখানো হয়েছে কোন কোন পরিস্থিতিতে গোলাকার বন্ধনী ব্যবহার করা হয়।

সারণি B-8: গোলাকার বন্ধনী

প্রতীকব্যাখ্যা
()খালি টাপল (ইউনিট হিসাবেও পরিচিত), লিটারেল এবং টাইপ উভয়ই
(expr)প্যারেনথেসাইজড এক্সপ্রেশন
(expr,)একক-উপাদান টাপল এক্সপ্রেশন
(type,)একক-উপাদান টাপল টাইপ
(expr, ...)টাপল এক্সপ্রেশন
(type, ...)টাপল টাইপ
expr(expr, ...)ফাংশন কল এক্সপ্রেশন; টাপল struct এবং টাপল enum ভেরিয়েন্ট ইনিশিয়ালাইজ করতেও ব্যবহৃত হয়

সারণি B-9-এ সেই প্রেক্ষাপটগুলি দেখানো হয়েছে যেখানে কোঁকড়া ধনুর্বন্ধনী ব্যবহার করা হয়।

সারণি B-9: কোঁকড়া বন্ধনী

প্রসঙ্গব্যাখ্যা
{...}ব্লক এক্সপ্রেশন
Type {...}struct লিটারেল

সারণি B-10 সেই প্রেক্ষাপটগুলি দেখায় যেখানে বর্গাকার বন্ধনী ব্যবহার করা হয়।

সারণি B-10: বর্গাকার বন্ধনী

প্রসঙ্গব্যাখ্যা
[...]অ্যারে লিটারেল
[expr; len]expr-এর len সংখ্যক কপি ধারণকারী অ্যারে লিটারেল
[type; len]type-এর len সংখ্যক ইন্সট্যান্স ধারণকারী অ্যারে টাইপ
expr[expr]কালেকশন ইনডেক্সিং। ওভারলোডযোগ্য (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]কালেকশন স্লাইসিং ভান করে কালেকশন ইনডেক্সিং, "সূচক" হিসাবে Range, RangeFrom, RangeTo, বা RangeFull ব্যবহার করে