স্ট্রিং এর দৈর্ঘ্য চিহ্নিত করা

Rust:
স্ট্রিং এর দৈর্ঘ্য চিহ্নিত করা

কিভাবে:

রাস্ট আপনাকে len() দেয় সরল দৈর্ঘ্যের জন্য:

fn main() {
    let greeting = "Hello, world!";
    println!("Length: {}", greeting.len());
}

আউটপুট: Length: 13

তবে সাবধান, len() বাইট গণনা করে, অক্ষর নয়। অক্ষরের সংখ্যা জন্য, .chars().count() ব্যবহার করুন:

fn main() {
    let greeting = "¡Hola, mundo!";
    println!("Character count: {}", greeting.chars().count());
}

আউটপুট: Character count: 12

গভীরে যাওয়া

len() বাইট গণনা করে কারণ রাস্ট স্ট্রিংগুলি UTF-8 কোডেড। ঐতিহাসিকভাবে, প্রথম কম্পিউটারগুলি ASCII ব্যবহার করত, প্রতিটি অক্ষরকে একটি একক বাইট দিয়ে প্রতিনিধিত্ব করত। অবশ্য, UTF-8 বিপুল পরিমাণ অক্ষর সমর্থন করে, প্রতিটির জন্য 1 থেকে 4 বাইট ব্যবহার করে।

আপনি যখন len() কল করেন, Rust একটি স্ট্রিংয়ের মধ্যে বাইটগুলি গণনা করে, যা দ্রুত কিন্তু সবসময় অক্ষর সংখ্যার সাথে মিলবে না। উদাহরণস্বরূপ, ইমোজি বা নির্দিষ্ট অ্যাকসেন্টেড অক্ষরগুলি একাধিক বাইট নেয়। এজন্য .chars().count() গুরুত্বপূর্ণ—এটি অক্ষরগুলির উপর ইটারেট করে এবং ইউনিকোড স্কেলার মানের সংখ্যা দেয়, যা বেশিরভাগ মানুষ প্রকৃত অক্ষরের সংখ্যা হিসেবে আশা করে।

বিকল্প হিসাবে, .chars().count() সঠিক কিন্তু লম্বা স্ট্রিং জন্য ধীর কারণ এটি প্রতিটি অক্ষর দিয়ে ইটারেট করতে হয়। যদি পারফরম্যান্স জরুরি হয়, এবং আপনি ASCII অথবা স্থির-প্রস্থ ইউনিকোড অক্ষর নিয়ে নিশ্চিত থাকেন, len() আরও কার্যকরী।

শেষে, রাস্টের স্ট্রিং ইন্ডেক্সিং UTF-8 এনকোডিং কাজ করার কারণে অক্ষরের অবস্থান অনুসারে সরাসরি অ্যাক্সেস অনুমতি দেয় না। রাস্ট এমন অপারেশনগুলি প্রতিরোধ করে যা আকস্মিকভাবে অসম্পূর্ণ অক্ষরে স্ট্রিং ব্রেক করতে পারে বা স্লাইস করতে পারে।

আরও দেখুন